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) { }
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)); }
private static async ValueTask PreWriteAsync(IAsyncSimpleOutputStream <byte> stream, CancellationToken cancellationToken) { await stream.WriteByteAsync(0xC0, cancellationToken); }
public SimpleCrcOutputStream(IAsyncSimpleOutputStream <byte> @base, CrcCalculator <T> crcCalculator, bool leaveBaseUndisposed = false) : base(@base, leaveBaseUndisposed) { CrcCalculator = crcCalculator; }
public SimpleCrcOutputStream(IAsyncSimpleOutputStream <byte> @base, CrcParameters <T> crcParameters, bool leaveBaseUndisposed = false) : this(@base, crcParameters.CreateCalculator(), leaveBaseUndisposed) { }
public WrxPacketWriter(IAsyncSimpleOutputStream <byte> @base, bool leaveBaseUndisposed = false) : base(@base, leaveBaseUndisposed) { }