Ejemplo n.º 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;
        }
Ejemplo n.º 2
0
 protected Message(MessageHeader header)
     : this(header, ByteArray.Empty)
 {
 }
Ejemplo n.º 3
0
        /// <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)
            {
                MessageHeader header = new MessageHeader(_recvBuffer);
                if (_recvBuffer.Count < header.MessageSize)
                    break;

                ByteArray messageData = _recvBuffer.SubArray(0, header.MessageSize);
                _recvBuffer = _recvBuffer.SubArray(header.MessageSize, true);

                this.ReceiveMessage(new Message(messageData));
            }
        }