예제 #1
0
        public NetMessageData(NetMessageType msgType, FrameEncodeType encType, int frameWidth, int frameHeight, ulong timestamp)
        {
            this.msgType = msgType;
            this.encType = encType;

            this.frameWidth  = frameWidth;
            this.frameHeight = frameHeight;

            this.timestamp = timestamp;
        }
예제 #2
0
        public void DecompressData()
        {
            if (decompressor != null && frameData != null && frameData.Length > compHeaderSize && encType == FrameEncodeType.Compressed)
            {
                encType = (FrameEncodeType)frameData[0];
                int frameSize = System.BitConverter.ToInt32(frameData, 1);

                byte[] decompressBuffer = new byte[frameSize];
                int    decompSize       = decompressor.Decompress(frameData, compHeaderSize, decompressBuffer, 0, frameData.Length - compHeaderSize);
                frameData = decompressBuffer;

                decompressBuffer = null;
            }
        }
예제 #3
0
        public void CompressData()
        {
            if (compressor != null && frameData != null)
            {
                byte[] compressBuffer = new byte[frameData.Length + compHeaderSize];

                compressBuffer[0] = (byte)encType;
                byte[] elemBytes = System.BitConverter.GetBytes(frameData.Length);
                elemBytes.CopyTo(compressBuffer, 1);

                int compSize = compressor.Compress(frameData, 0, frameData.Length, compressBuffer, compHeaderSize) + compHeaderSize;

                encType   = FrameEncodeType.Compressed;
                frameData = new byte[compSize];
                System.Buffer.BlockCopy(compressBuffer, 0, frameData, 0, compSize);

                compressBuffer = null;
            }
        }
예제 #4
0
        public void UnwrapMessage(byte[] message)
        {
            int msgOffset = sizeof(int);

            msgType = (NetMessageType)message[msgOffset]; msgOffset++;
            encType = (FrameEncodeType)message[msgOffset]; msgOffset++;

            frameWidth  = System.BitConverter.ToUInt16(message, msgOffset); msgOffset += sizeof(ushort);
            frameHeight = System.BitConverter.ToUInt16(message, msgOffset); msgOffset += sizeof(ushort);

            timestamp = System.BitConverter.ToUInt64(message, msgOffset); msgOffset += sizeof(ulong);

            int frameSize = message.Length - msgOffset;

            frameData = new byte[frameSize];
            System.Array.Copy(message, msgOffset, frameData, 0, frameSize);

            if (decompressor != null)
            {
                DecompressData();
            }
        }
예제 #5
0
 public NetMessageData(NetMessageType msgType, FrameEncodeType encType)
 {
     this.msgType = msgType;
     this.encType = encType;
 }