コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GAF.Net.PacketHeader"/> class.
        /// </summary>
        /// <param name="headerBytes">Header bytes.</param>
        public PacketHeader(byte[] headerBytes)
        {
            _headerBytes = headerBytes;

            if (_headerBytes.Length != HeaderLength)
            {
                throw new ArgumentOutOfRangeException("headerBytes", string.Format("The header must be a byte array of length {0}", HeaderLength));
            }

            // header consists of
            //soh (Guid) 16 bytes
            //length (int) 4 bytes
            //pid (byte) 1 byte
            //oid (Guid) 16 bytes

            var headerSoh = new byte[16];             //guid
            var headerOid = new byte[16];             //guid

            //get the header elements
            Array.Copy(headerBytes, _indexOfSoh, headerSoh, 0, headerSoh.Length);
            if (new Guid(headerSoh).ToString() != SOH.ToString())
            {
                throw new ArgumentException("SOH is invalid.", "headerBytes");
            }

            // pid
            PacketId = (PacketId)headerBytes [_indexOfPid];

            // objectId set by consumer
            Array.Copy(headerBytes, _indexOfOid, headerOid, 0, headerOid.Length);
            ObjectId = new Guid(headerOid);

            DataLength = BitConverter.ToInt32(headerBytes, _indexofDataLengthElement);
        }
コード例 #2
0
        /// <summary>
        /// Returns the Packet as a byte array.
        /// </summary>
        /// <returns>A byte array.</returns>
        public byte[] ToByteArray()
        {
            var headerBytes = new byte[HeaderLength];
            var soh         = SOH.ToByteArray();
            var pid         = new byte[1] {
                (byte)PacketId
            };
            var headerObjectId   = ObjectId.ToByteArray();
            var headerDataLength = BitConverter.GetBytes(DataLength);

            //copy the header elements to the header property
            Array.Copy(soh, 0, headerBytes, _indexOfSoh, soh.Length);                                         // SOH
            Array.Copy(headerDataLength, 0, headerBytes, _indexofDataLengthElement, headerDataLength.Length); //Data Length
            Array.Copy(pid, 0, headerBytes, _indexOfPid, pid.Length);
            Array.Copy(headerObjectId, 0, headerBytes, _indexOfOid, headerObjectId.Length);                   // Object Id

            return(headerBytes);
        }