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); }
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); } } }
private void OnExtension(ExtensionFrame obj) { ExtensionFrameReceived(obj); }