public byte[] Get(byte[] tableid, byte[] key) { NetMessage netMessage = Protocol_GetValue.CreateSendMsg(tableid, key, "", 0, true); actor.Tell(netMessage.ToBytes()); return(K_V.Get(tableid.Concat(key).ToArray().ToHexString()).Result); }
public override void OnTell(IModulePipeline from, byte[] data) { if (from == null)//来自自己 { var actor = this.GetPipeline(string.Format("{0}:{1}/{2}", setting.DBServerAddress, setting.DBServerPort, setting.DBServerPath)); actor.Tell(data); } if (from != null && from.system.Remote != null)//来自server { using (MemoryStream ms = new MemoryStream(data)) { NetMessage netMsg = NetMessage.Unpack(ms); if (netMsg.Cmd == "_db.usesnapshot") { UInt64 sid = Protocol_UseSnapShot.PraseRecvMsg(netMsg); Utc_SID.Add(netMsg.ID, sid); } if (netMsg.Cmd == "_db.getvalue") { byte[] value = Protocol_GetValue.PraseRecvMsg(netMsg); var str = netMsg.Param.key == null?netMsg.Param.tableid.ToHexString() : netMsg.Param.tableid.Concat(netMsg.Param.key).ToArray().ToHexString(); K_V.Add(str, value); } if (netMsg.Cmd == "_db.snapshot.newiterator") { UInt64 itid = Protocol_CreateIterator.PraseRecvMsg(netMsg); SID_ItId.Add(netMsg.Param.snapid, itid); } if (netMsg.Cmd == "_db.iterator.current") { byte[] value = Protocol_IteratorCurrent.PraseRecvMsg(netMsg); ItID_Cur.Add(netMsg.Param.itid, value); } if (netMsg.Cmd == "_db.iterator.next") { bool result = Protocol_IteratorNext.PraseRecvMsg(netMsg); ItID_Next.Add(netMsg.Param.itid, result); } if (netMsg.Cmd == "_db.iterator.seektofirst") { bool result = Protocol_IteratorSeekToFirst.PraseRecvMsg(netMsg); ItID_STF.Add(netMsg.Param.itid, result); } } } }
public T Get <T>(byte[] tableid, byte[] key = null) where T : class, ISerializable, new() { NetMessage netMessage = Protocol_GetValue.CreateSendMsg(tableid, key, "", 0, true); actor.Tell(netMessage.ToBytes()); var str = key == null?tableid.ToHexString() : tableid.Concat(key).ToArray().ToHexString(); var value = K_V.Get(str).Result; if (value == null || value.Length == 0) { return(null); } var a = value.AsSerializable <T>(); return(a); }