Exemple #1
0
		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));
			}
		}
Exemple #3
0
		protected Message(MessageHeader header)
			: this(header, ByteArray.Empty)
		{
		}
Exemple #4
0
 protected Message(MessageHeader header)
     : this(header, ByteArray.Empty)
 {
 }