private PendingWrite CreatePendingBufferWrite(IActorRef commander, ByteString data, Tcp.Event ack, Tcp.WriteCommand tail) { var buffer = _tcp.BufferPool.Acquire(); try { var copied = data.CopyToBuffer(buffer); buffer.Flip(); return(new PendingBufferWrite(this, commander, data.Drop(copied), ack, buffer, tail)); } catch (Exception) { _tcp.BufferPool.Release(buffer); throw; } }
public static List<object> Deserialize(ActorSystem system, ByteString message) { var result = new List<object>(); while (!message.IsEmpty) { var seriliazerId = BitConverter.ToInt32(message.Take(SeriliazerIdBytesCount).ToArray(), 0); var messageLength = BitConverter.ToInt32(message.Skip(SeriliazerIdBytesCount).Take(MessageLengthBytesCount).ToArray(), 0); var messageBytes = message.Skip(CompletePrefixBytesCount).Take(messageLength).ToArray(); var seriliazer = system.Serialization.GetSerializerById(seriliazerId); result.Add(seriliazer.FromBinary(messageBytes, typeof(object))); message = message.Drop(CompletePrefixBytesCount + messageLength); } return result; }