Esempio n. 1
0
    public unsafe static T Deserialize <T>(byte[] source) where T : struct
    {
        // create new buffer for body bytes
        // the header size is substracted directly
        // because it was serialized directly
        var headerSize = MemUtils.Sizeof <MessageHeader>();
        var dest       = new byte[source.Length - headerSize];

        Buffer.BlockCopy(source, headerSize, dest, 0, dest.Length);

        return(Serializer.Deserialize <T>(dest));
    }
Esempio n. 2
0
    public unsafe static byte[] Serialize <T>(T body, MessageHeader header) where T : struct
    {
        // serialize header and body
        var headerSize  = MemUtils.Sizeof <MessageHeader>();
        var headerBytes = MemUtils.Copy((byte *)&header, 0, headerSize);
        var bodyBytes   = Serializer.Serialize <T>(body);

        // merge serialized parts into buffer
        var dest = new byte[bodyBytes.Length + headerBytes.Length];

        Buffer.BlockCopy(headerBytes, 0, dest, 0, headerBytes.Length);
        Buffer.BlockCopy(bodyBytes, 0, dest, headerBytes.Length, bodyBytes.Length);

        return(dest);
    }