public Message(MessageHeader header, ByteArray body) { if (header.ContentLength != body.Count) throw new InvalidOperationException("Header ContentLength must be equals to body length"); this.Header = header; this.Body = body; }
/// <summary> /// Receives data from the lower layer /// </summary> /// <param name="data">Data recived</param> public virtual void Receive(ByteArray data) { _recvBuffer = _recvBuffer.Concat(data, true); while (_recvBuffer.Count >= MessageHeader.HeaderSize) { var header = new MessageHeader(_recvBuffer); if (_recvBuffer.Count < header.MessageSize) break; var messageData = _recvBuffer.SubArray(0, header.MessageSize); _recvBuffer = _recvBuffer.SubArray(header.MessageSize, true); this.ReceiveMessage(new Message(messageData)); } }
protected Message(MessageHeader header) : this(header, ByteArray.Empty) { }