Exemplo n.º 1
0
 private UntypedReceive WaitingForPrefix(IHandleEventListener el, IO.ByteString buffer)
 {
     if (buffer.Count >= 4)
     {
         var length = buffer.Iterator().GetInt();
         return WaitingForBody(el, buffer.Drop(4), length);
     }
     return message =>
     {
         if (message is Tcp.Received)
         {
             var received = message as Tcp.Received;
             Become(WaitingForPrefix(el, buffer.Concat(received.Data)));
         }
         else HandleWrite(message);
     };
 }
Exemplo n.º 2
0
 private UntypedReceive WaitingForBody(IHandleEventListener el, IO.ByteString buffer, int length)
 {
     if (buffer.Count >= length)
     {
         var parts = buffer.SplitAt(length);
         el.Notify(new InboundPayload(ByteString.CopyFrom(parts.Item1.ToArray())));
         return WaitingForPrefix(el, parts.Item2);
     }
     return message =>
     {
         if (message is Tcp.Received)
         {
             var received = message as Tcp.Received;
             Become(WaitingForBody(el, buffer.Concat(received.Data), length));
         }
         else HandleWrite(message);
     };
 }