ValueTask IAppSession.SendAsync <TPackage>(IPackageEncoder <TPackage> packageEncoder, TPackage package) { lock (_channel) { return(_channel.SendAsync(packageEncoder, package)); } }
public override async ValueTask SendAsync <TPackage>(IPackageEncoder <TPackage> packageEncoder, TPackage package) { var writer = Out.Writer; WritePackageWithEncoder <TPackage>(writer, packageEncoder, package); await writer.FlushAsync(); }
private void WritePackageWithEncoder <TPackage>(PipeWriter writer, IPackageEncoder <TPackage> packageEncoder, TPackage package) { lock (writer) { packageEncoder.Encode(writer, package); } }
private void WritePackageWithEncoder <TPackage>(PipeWriter writer, IPackageEncoder <TPackage> packageEncoder, TPackage package) { lock (writer) { CheckChannelOpen(); packageEncoder.Encode(writer, package); } }
public ProxyClient(IOptions <ClientOptions> options , ILogger <ProxyClient> logger , IPackageEncoder <ProxyPackage> encoder , IPackageDecoder <ProxyPackage> decoder) { this.logger = logger; this.options = options?.Value; Checker.NotNull(this.options); this.encoder = encoder; this.decoder = decoder; channelOptions = new ChannelOptions(); clientConnectionHolder = new Dictionary <int, IConnection>(); }
public override async ValueTask SendAsync <TPackage>(IPackageEncoder <TPackage> packageEncoder, TPackage package) { try { await _sendLock.WaitAsync(); var writer = Out.Writer; WritePackageWithEncoder <TPackage>(writer, packageEncoder, package); await writer.FlushAsync(); } finally { _sendLock.Release(); } }
public ProxyClientConnection(ILogger logger , IPAddress serverAddress , int serverPort , ChannelConfig channelConfig , IPackageEncoder <ProxyPackage> encoder , IPackageDecoder <ProxyPackage> decoder) { this.serverPort = serverPort; this.channelConfig = channelConfig; this.logger = logger; this.serverAddress = serverAddress; this.encoder = encoder; this.decoder = decoder; channelOptions = new ChannelOptions(); serverChannelHolder = new Dictionary <long, IChannel>(); }
public override async ValueTask SendAsync <TPackage>(IPackageEncoder <TPackage> packageEncoder, TPackage package) { if (_enableSendingPipe) { await base.SendAsync(packageEncoder, package); return; } try { await SendLock.WaitAsync(); var writer = Out.Writer; WritePackageWithEncoder <TPackage>(writer, packageEncoder, package); await writer.FlushAsync(); await ProcessOutputRead(Out.Reader, null); } finally { SendLock.Release(); } }
public EasyClient(IPipelineFilter <TPackage> pipelineFilter, IPackageEncoder <TSendPackage> packageEncoder, ILogger logger = null) : this(pipelineFilter, packageEncoder, new ChannelOptions { Logger = logger }) { }
protected EasyClient(IPackageEncoder <TSendPackage> packageEncoder) : base() { _packageEncoder = packageEncoder; }
public EasyClient(IPipelineFilter <TPackage> pipelineFilter, IPackageEncoder <TSendPackage> packageEncoder = null, ILogger logger = null) : base(pipelineFilter, logger) { _packageEncoder = packageEncoder; }
public COUNTDOWN(IPackageEncoder <string> encoder) { _encoder = encoder; }
protected void WritePackageWithEncoder <TPackage>(IBufferWriter <byte> writer, IPackageEncoder <TPackage> packageEncoder, TPackage package) { CheckChannelOpen(); packageEncoder.Encode(writer, package); }
public DIV(IPackageEncoder <string> encoder) { _encoder = encoder; }
public SUB(IPackageEncoder <string> encoder) { _encoder = encoder; }
public EasyClient(IPipelineFilter <TPackage> pipelineFilter, IPackageEncoder <TSendPackage> packageEncoder, ChannelOptions options) : base(pipelineFilter, options) { _packageEncoder = packageEncoder; }
/// <summary> /// 发送数据(异步) /// </summary> /// <typeparam name="TPackage">包实体</typeparam> /// <param name="packageEncoder">包编码</param> /// <param name="package">数据包</param> /// <returns></returns> public abstract ValueTask SendAsync <TPackage>(IPackageEncoder <TPackage> packageEncoder, TPackage package);
public EasyClient(IPipelineFilter <TPackage> pipelineFilter, Func <TPackage, Task> handler, IPackageEncoder <TPackage> packageEncoder = null, ILogger logger = null) : base(pipelineFilter, handler, packageEncoder, logger) { }