Skip to content

Latest commit

 

History

History
70 lines (57 loc) · 1.19 KB

README.md

File metadata and controls

70 lines (57 loc) · 1.19 KB

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();