示例#1
0
        public async ValueTask WriteAsync(IAsyncSimpleOutputStream <byte> stream, CancellationToken cancellationToken = default)
        {
            ushort crc;

            await using (var crcStream = Crc16.CcittFalse.Wrap(stream, leaveBaseUndisposed: true))
            {
                await crcStream.WriteByteAsync((byte)Protocol, cancellationToken).ConfigureAwait(false);

                switch (Protocol)
                {
                case 0:
                    await WriteProtocol0Async(crcStream, cancellationToken).ConfigureAwait(false);

                    break;

                case 1:
                    await WriteProtocol1Async(crcStream, cancellationToken).ConfigureAwait(false);

                    break;

                default:
                    throw new InvalidOperationException();
                }

                crc = crcStream.Crc;
            }

            await stream.WriteUInt16LittleEndianAsync(crc, cancellationToken).ConfigureAwait(false);
        }
 public WrxCommandClient(
     IAsyncSimpleOutputStream <byte> requestStream,
     IAsyncSimpleInputStream <byte> responseStream,
     ArrayPool <byte> byteArrayPool,
     bool doNotDisposeRequestStream  = false,
     bool doNotDisposeResponseStream = false) :
     this(
         new WrxPacketWriter(requestStream, doNotDisposeRequestStream),
         new WrxPacketReader(responseStream, doNotDisposeResponseStream),
         byteArrayPool)
 {
 }
 public WrxCommandServer(
     IAsyncSimpleInputStream <byte> requestStream,
     IAsyncSimpleOutputStream <byte> responseStream,
     IAsyncWrxCommandHandler commandHandler,
     bool doNotDisposeRequestStream  = false,
     bool doNotDisposeResponseStream = false) :
     this(
         new WrxPacketReader(requestStream, doNotDisposeRequestStream),
         new WrxPacketWriter(responseStream, doNotDisposeResponseStream),
         commandHandler,
         ArrayPool <byte> .Shared)
 {
 }
 public WrxCommandClient(
     IAsyncSimpleOutputStream <byte> requestStream,
     IAsyncSimpleInputStream <byte> responseStream,
     bool doNotDisposeRequestStream  = false,
     bool doNotDisposeResponseStream = false) :
     this(
         requestStream,
         responseStream,
         ArrayPool <byte> .Shared,
         doNotDisposeRequestStream,
         doNotDisposeResponseStream)
 {
 }
示例#5
0
        public static async ValueTask WritePacketAsync <TState>(
            IAsyncSimpleOutputStream <byte> stream,
            Func <IAsyncSimpleOutputStream <byte>, TState, CancellationToken, ValueTask> callback,
            TState state,
            CancellationToken cancellationToken = default)
        {
            await PreWriteAsync(stream, cancellationToken).ConfigureAwait(false);

            await using var packetStream = new PacketOutputStream(stream);

            try
            {
                await callback(packetStream, state, cancellationToken).ConfigureAwait(false);
            }
            finally
            {
                await PostWriteAsync(stream, cancellationToken).ConfigureAwait(false);
            }
        }
 public static SimpleCrcOutputStream <T> Wrap <T>(this CrcParameters <T> parameters, IAsyncSimpleOutputStream <byte> @base, bool leaveBaseUndisposed = false)
 {
     return(new SimpleCrcOutputStream <T>(@base, parameters, leaveBaseUndisposed));
 }
示例#7
0
 private static async ValueTask PreWriteAsync(IAsyncSimpleOutputStream <byte> stream, CancellationToken cancellationToken)
 {
     await stream.WriteByteAsync(0xC0, cancellationToken);
 }
示例#8
0
 public SimpleCrcOutputStream(IAsyncSimpleOutputStream <byte> @base, CrcCalculator <T> crcCalculator, bool leaveBaseUndisposed = false) :
     base(@base, leaveBaseUndisposed)
 {
     CrcCalculator = crcCalculator;
 }
示例#9
0
 public SimpleCrcOutputStream(IAsyncSimpleOutputStream <byte> @base, CrcParameters <T> crcParameters, bool leaveBaseUndisposed = false) :
     this(@base, crcParameters.CreateCalculator(), leaveBaseUndisposed)
 {
 }
示例#10
0
 public WrxPacketWriter(IAsyncSimpleOutputStream <byte> @base, bool leaveBaseUndisposed = false) :
     base(@base, leaveBaseUndisposed)
 {
 }