コード例 #1
0
ファイル: AppSession.cs プロジェクト: zqlovejyc/SuperSocket
 ValueTask IAppSession.SendAsync <TPackage>(IPackageEncoder <TPackage> packageEncoder, TPackage package)
 {
     lock (_channel)
     {
         return(_channel.SendAsync(packageEncoder, package));
     }
 }
コード例 #2
0
ファイル: PipeChannel.cs プロジェクト: zqlovejyc/SuperSocket
        public override async ValueTask SendAsync <TPackage>(IPackageEncoder <TPackage> packageEncoder, TPackage package)
        {
            var writer = Out.Writer;

            WritePackageWithEncoder <TPackage>(writer, packageEncoder, package);
            await writer.FlushAsync();
        }
コード例 #3
0
ファイル: PipeChannel.cs プロジェクト: lwqwag/SuperSocket
 private void WritePackageWithEncoder <TPackage>(PipeWriter writer, IPackageEncoder <TPackage> packageEncoder, TPackage package)
 {
     lock (writer)
     {
         packageEncoder.Encode(writer, package);
     }
 }
コード例 #4
0
ファイル: PipeChannel.cs プロジェクト: zqlovejyc/SuperSocket
 private void WritePackageWithEncoder <TPackage>(PipeWriter writer, IPackageEncoder <TPackage> packageEncoder, TPackage package)
 {
     lock (writer)
     {
         CheckChannelOpen();
         packageEncoder.Encode(writer, package);
     }
 }
コード例 #5
0
 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>();
 }
コード例 #6
0
ファイル: PipeChannel.cs プロジェクト: bxjg1987/SuperSocket
        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();
            }
        }
コード例 #7
0
 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>();
 }
コード例 #8
0
        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();
            }
        }
コード例 #9
0
 public EasyClient(IPipelineFilter <TPackage> pipelineFilter, IPackageEncoder <TSendPackage> packageEncoder, ILogger logger = null)
     : this(pipelineFilter, packageEncoder, new ChannelOptions {
     Logger = logger
 })
 {
 }
コード例 #10
0
 protected EasyClient(IPackageEncoder <TSendPackage> packageEncoder)
     : base()
 {
     _packageEncoder = packageEncoder;
 }
コード例 #11
0
 public EasyClient(IPipelineFilter <TPackage> pipelineFilter, IPackageEncoder <TSendPackage> packageEncoder = null, ILogger logger = null)
     : base(pipelineFilter, logger)
 {
     _packageEncoder = packageEncoder;
 }
コード例 #12
0
ファイル: CommandTest.cs プロジェクト: ypeng-ming/SuperSocket
 public COUNTDOWN(IPackageEncoder <string> encoder)
 {
     _encoder = encoder;
 }
コード例 #13
0
ファイル: PipeChannel.cs プロジェクト: ypeng-ming/SuperSocket
 protected void WritePackageWithEncoder <TPackage>(IBufferWriter <byte> writer, IPackageEncoder <TPackage> packageEncoder, TPackage package)
 {
     CheckChannelOpen();
     packageEncoder.Encode(writer, package);
 }
コード例 #14
0
 public DIV(IPackageEncoder <string> encoder)
 {
     _encoder = encoder;
 }
コード例 #15
0
 public SUB(IPackageEncoder <string> encoder)
 {
     _encoder = encoder;
 }
コード例 #16
0
 public EasyClient(IPipelineFilter <TPackage> pipelineFilter, IPackageEncoder <TSendPackage> packageEncoder, ChannelOptions options)
     : base(pipelineFilter, options)
 {
     _packageEncoder = packageEncoder;
 }
コード例 #17
0
 /// <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);
コード例 #18
0
ファイル: EasyClient.cs プロジェクト: inrg/SuperSocket
 public EasyClient(IPipelineFilter <TPackage> pipelineFilter, Func <TPackage, Task> handler, IPackageEncoder <TPackage> packageEncoder = null, ILogger logger = null)
     : base(pipelineFilter, handler, packageEncoder, logger)
 {
 }