Example #1
0
        public void AddPacket(byte[] packetData, int length)
        {
            int lengthOfPacket = length;


            if (currPacketGroup.data == null)
            {
                currPacketGroup.data = new byte[MTU_SIZE];
            }

            if (currPacketGroup.size + lengthOfPacket + 1 >= MTU_SIZE)
            {
                packetGroups.Add(currPacketGroup);
                currPacketGroup      = new PacketGroupData();
                currPacketGroup.data = new byte[MTU_SIZE];
            }

            unsafe
            {
                fixed(byte *destPointer = currPacketGroup.data)
                {
                    fixed(byte *srcPointer = packetData)
                    {
                        *(destPointer + currPacketGroup.size) = (byte)length;
                        Memory.MemoryCopy((void *)(destPointer + currPacketGroup.size + 1), (void *)srcPointer, lengthOfPacket);
                        currPacketGroup.size += lengthOfPacket + 1;
                    }
                }
            }

            numPackets++;
        }
Example #2
0
 public void Clear()
 {
     packetGroups.Clear();
     currPacketGroup = new PacketGroupData();
     numPackets      = 0;
 }