package jelectrum.db.level;
import java.util.Map;
import java.util.TreeMap;
import java.util.Set;
import java.util.HashSet;
import java.util.Collection;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
import org.junit.Assert;
import java.nio.ByteBuffer;
import org.bitcoinj.core.Sha256Hash;
import jelectrum.db.DBMapSet;
import jelectrum.db.DBTooManyResultsException;
import com.google.protobuf.ByteString;
public class LevelDBMapSet extends DBMapSet
{
private LevelNetClient c;
private String prefix;
public LevelDBMapSet(LevelNetClient c, String prefix)
{
this.c = c;
this.prefix=prefix + "/";
}
public Set<Sha256Hash> getSet(String p, int max_replies)
{
HashSet<Sha256Hash> ret = new HashSet<Sha256Hash>();
String search=prefix + p + "/";
int len = search.length();
for(String s : c.getByPrefix(search, max_replies).keySet())
{
Assert.assertEquals(search, s.substring(0, search.length()));
ret.add(new Sha256Hash(s.substring(len)));
}
return ret;
}
public void addAll(Collection<Map.Entry<String, Sha256Hash> > lst)
{
Map<String, ByteString> write_map = new TreeMap<String, ByteString>();
for(Map.Entry<String, Sha256Hash> me : lst)
{
write_map.put(prefix + me.getKey() + "/" + me.getValue(), null);
}
c.putAll(write_map);
}
public void add(String p, Sha256Hash v)
{
c.put(prefix + p + "/" + v, null);
}
}