示例#1
0
        private static async ValueTask <WrxPacket> ReadCommonAsync(int protocol, WrxPacketAction action, int command, int dataLength, IAsyncSimpleInputStream <byte> stream, CancellationToken cancellationToken)
        {
            var data = ArrayPool <byte> .Shared.Rent(dataLength);

            await stream.ReadFullyAsync(data.AsMemory(..dataLength), cancellationToken).ConfigureAwait(false);

            return(new WrxPacket(protocol, action, command, data.AsMemory(..dataLength), OnDispose, data));
示例#2
0
 public void Deconstruct(out int protocol, out WrxPacketAction action, out int command, out ReadOnlyMemory <byte> data)
 {
     protocol = Protocol;
     action   = Action;
     command  = Command;
     data     = Data;
 }
示例#3
0
 public WrxPacket(int protocol, WrxPacketAction action, int command, ReadOnlyMemory <byte> data = default, Action <object?>?onDispose = default, object?onDisposeState = default)
 {
     Protocol       = protocol;
     Action         = action;
     Command        = command;
     Data           = data;
     OnDispose      = onDispose;
     OnDisposeState = onDisposeState;
 }
        private WrxPacket CreateErrorPacket(WrxPacketAction action, int command, WrxPacketError error)
        {
            var byteArray = _byteArrayPool.Rent(2);
            var bytes     = byteArray.AsMemory(..2);

            bytes.Span[0] = (byte)command;
            bytes.Span[1] = (byte)error;

            return(new WrxPacket(0, action, 0xFF, bytes, _disposePacketCallback, byteArray));
        }