Skip to content

MineCosmos/buffers

Repository files navigation

MineCosmos.Buffers

用法:

// Reader
var reader = new MinCosmosReader(buffer);
reader.ReadByte();
reader.ReadUInt16();
// Writer
var buffer = MinCosmosArrayPool.Rent(minBufferSize: 4096);
try
{
    var writer = new MinCosmosWriter(buffer);
    writer.WriteByte(0);
    writer.WriteUInt16(0);

    var res = writer.FlushAndGetEncodingArray();
}
finally
{
    MinCosmosArrayPool.Return(buffer);
}

封装:

public interface IMessage
{
    byte[] Decode(ref MineCosmosWriter writer);
}


public class Message: IMessage
{
    public int Age {get; set;}

    public byte[] Decode(ref MineCosmosWriter writer)
    {
        writer.WriterUInt32(Age);
    }
}

public static class MessageConvert
{
    public static byte[] Serialize(this IMessage message, int minBufferSize = 4096)
    {
        byte[] buffer = MinCosmosArrayPool.Rent(minBufferSize);
        try
        {
            MinCosmosWriter writer = new MinCosmosWriter(buffer);
            message.Decode(writer);
            return writer.FlushAndGetEncodingArray();
        }
        finally
        {
            MinCosmosArrayPool.Return(buffer);
        }
    }
}

// result
byte[] result = message.Serialize();

Releases

No releases published

Packages

No packages published

Languages