Ejemplo n.º 1
0
 private void OnExtensionFrame(ExtensionFrame frame)
 {
     if (frame.Payload is DotNetType)
     {
         _inboundDotNetType = ((DotNetType)frame.Payload).CreateType();
     }
     if (frame.ExtensionId == _ackExtensionId)
     {
         var ackCount = _ackReceiver.Confirm((AckFrame)frame);
         if (_messageStore != null)
         {
             _messageStore.Remove(ackCount);
             var msgsToSend = new List <object>();
             _messageStore.Peek(msgsToSend, _ackReceiver.FreeSlots);
             foreach (var o in msgsToSend)
             {
                 //TODO: We should really send a list so that SendMore() can be sued
                 _ackReceiver.Send((MessageFrame)o);
             }
         }
         if (AckReceived != null)
         {
             AckReceived((AckFrame)frame);
         }
     }
 }
        public bool Read(byte[] buffer, ref int offset, ref int bytesTransferred)
        {
            while (bytesTransferred > 0)
            {
                switch (_receiveState)
                {
                case ExtensionFrameState.Flags:
                    Flags         = (FrameFlags)buffer[offset];
                    _receiveState = ExtensionFrameState.ExtensionId;
                    ++offset;
                    --bytesTransferred;
                    break;

                case ExtensionFrameState.ExtensionId:
                    var extensionId = buffer[offset];
                    ++offset;
                    --bytesTransferred;
                    _receiveState = ExtensionFrameState.Payload;
                    _receiveFrame = (ExtensionFrame)_extensionFactory(extensionId);
                    break;

                case ExtensionFrameState.Payload:
                    var isCompleted = _receiveFrame.Read(buffer, ref offset, ref bytesTransferred);
                    if (isCompleted)
                    {
                        _frameReceived(_receiveFrame);
                        _receiveState = ExtensionFrameState.Flags;
                    }

                    return(isCompleted);
                }
            }

            return(false);
        }
Ejemplo n.º 3
0
 private void OnExtensionFrame(ExtensionFrame obj)
 {
     if (obj.Payload is DotNetType)
     {
         var type = (DotNetType)obj.Payload;
         _payloadDotNetType = type.CreateType();
     }
 }
 private void OnExtensionFrame(ExtensionFrame frame)
 {
     if (frame.Payload is DotNetType)
     {
         _payloadDotNetType = ((DotNetType)frame.Payload).CreateType();
     }
     if (frame.ExtensionId == _ackExtensionId)
     {
         _ackReceiver.Confirm((AckFrame)frame);
         if (AckReceived != null)
         {
             AckReceived((AckFrame)frame);
         }
     }
 }
Ejemplo n.º 5
0
 private void OnExtension(ExtensionFrame obj)
 {
     ExtensionFrameReceived(obj);
 }