Exemple #1
0
    // private method
    // create packet include header
    private byte[] CreatePacketStream <T, U>(Packet <T, U> packet)
    {
        // data iniialize
        byte[] packetData = packet.GetPacketData();

        PacketHeader     header     = new PacketHeader();
        HeaderSerializer serializer = new HeaderSerializer();

        // set header data
        header.length = (short)packetData.Length;
        header.id     = (byte)packet.GetPacketID();

        byte[] headerData = null;

        try
        {
            serializer.Serialize(header);
        }
        catch
        {
        }

        headerData = serializer.GetSerializeData();

        // header / packet data combine
        byte[] data = new byte[headerData.Length + packetData.Length];

        int headerSize = Marshal.SizeOf(header.id) + Marshal.SizeOf(header.length);

        Buffer.BlockCopy(headerData, 0, data, 0, headerSize);
        Buffer.BlockCopy(packetData, 0, data, headerSize, packetData.Length);

        return(data);
    }