package jelectrum.db.lmdb;
import java.util.Map;
import jelectrum.db.DBMap;
import org.fusesource.lmdbjni.Database;
import org.fusesource.lmdbjni.Env;
import org.fusesource.lmdbjni.Transaction;
import com.google.protobuf.ByteString;
public class LMDBMap extends DBMap
{
private Env env;
private Database db;
public LMDBMap(Env env, Database db)
{
this.env = env;
this.db = db;
}
public ByteString get(String key)
{
byte[] key_data = key.getBytes();
if (key_data.length == 0) key_data = new byte[1];
byte[] b = db.get(key_data);
if (b == null) return null;
return ByteString.copyFrom(b);
}
public void put(String key, com.google.protobuf.ByteString value)
{
byte[] key_data = key.getBytes();
if (key_data.length == 0) key_data = new byte[1];
db.put(key_data, value.toByteArray());
}
public void putAll(Map<String, ByteString> m)
{
Transaction tx = env.createTransaction();
for(Map.Entry<String, ByteString> me : m.entrySet())
{
String key = me.getKey();
byte[] key_data = key.getBytes();
if (key_data.length == 0) key_data = new byte[1];
db.put(tx, key_data, me.getValue().toByteArray());
}
tx.commit();
}
}