package jelectrum.db.jedis; import com.google.protobuf.ByteString; import java.util.Map; import jelectrum.db.DBMapSet; import redis.clients.jedis.JedisPool; import redis.clients.jedis.Jedis; import org.bitcoinj.core.Sha256Hash; import java.util.HashSet; import java.util.Set; public class JedisMapSet extends DBMapSet { private JedisPool pool; private String name; public JedisMapSet(JedisPool pool, String name) { this.pool = pool; this.name = name; } @Override public void add(String key, Sha256Hash hash) { String look = name + "/" + key; try(Jedis jedis = pool.getResource()) { jedis.sadd(look.getBytes(), hash.getBytes()); } } @Override public Set<Sha256Hash> getSet(String key, int max_reply) { String look = name + "/" + key; Set<Sha256Hash> set = new HashSet<>(); try(Jedis jedis = pool.getResource()) { if (jedis.scard(look) > max_reply) { throw new jelectrum.db.DBTooManyResultsException(); } Set<byte[]> smembers = jedis.smembers(look.getBytes()); for(byte[] b : smembers) { Sha256Hash h = new Sha256Hash(b); set.add(h); } } return set; } }