|
1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System.IO.Pipelines;
-
- namespace MQTTnet.AspNetCore.Client.Tcp
- {
- public class DuplexPipe : IDuplexPipe
- {
- public DuplexPipe(PipeReader reader, PipeWriter writer)
- {
- Input = reader;
- Output = writer;
- }
-
- public PipeReader Input { get; }
-
- public PipeWriter Output { get; }
-
- public static DuplexPipePair CreateConnectionPair(PipeOptions inputOptions, PipeOptions outputOptions)
- {
- var input = new Pipe(inputOptions);
- var output = new Pipe(outputOptions);
-
- var transportToApplication = new DuplexPipe(output.Reader, input.Writer);
- var applicationToTransport = new DuplexPipe(input.Reader, output.Writer);
-
- return new DuplexPipePair(applicationToTransport, transportToApplication);
- }
-
- // This class exists to work around issues with value tuple on .NET Framework
- public readonly struct DuplexPipePair
- {
- public IDuplexPipe Transport { get; }
- public IDuplexPipe Application { get; }
-
- public DuplexPipePair(IDuplexPipe transport, IDuplexPipe application)
- {
- Transport = transport;
- Application = application;
- }
- }
- }
- }
|