/// <summary> /// 运行 /// </summary> /// <typeparam name="TState"></typeparam> /// <param name="accept"></param> /// <param name="state"></param> public void Run <TState>(PipelineCallback <TState> accept, TState state = default(TState)) { if (!disposing) { listen.BeginAccept(CompleteAccept <TState>, new object[] { accept, state }); } }
public void Authenticate <TState>(X509Certificate certificate, PipelineCallback <TState> callback, TState state) { try { stream = new SslStream(base.CreateStream(), false); stream.BeginAuthenticateAsServer(certificate, CompleteAuthenticate <TState>, new object[] { callback, state }); } catch (Exception e) { Trace.WriteLine($"ssl authenticating failed {e}."); callback(null, false, state); Interrupte(); } }
protected override void OnConnected <TState>(PipelineCallback <TState> callback, TState state = default(TState)) { try { sslStream = new SslStream(base.CreateStream(), false, CertificateValidation); sslStream.BeginAuthenticateAsClient($"https://{Socket.RemoteEndPoint}", OnAuthenticated <TState>, new object[] { callback, state }); } catch (Exception e) { Trace.WriteLine($"ssl authenticating failed {e}."); callback(this, false, state); Interrupte(); } }
public void Run <TState>(PipelineCallback <TState> accept, TState state = default(TState)) { server.Run(OnAccept <TState>, new object[] { accept, state }); }
protected virtual void OnConnected <TState>(PipelineCallback <TState> callback, TState state = default(TState)) { callback(this, true, state); }
public void Connect <TState>(PipelineCallback <TState> callback, TState state = default(TState)) { var socket = base.Socket; socket.BeginConnect(address, port, OnConnected <TState>, new object[] { callback, state }); }
protected virtual void OnCreatePipeline <TState>(Socket socket, PipelineCallback <TState> callback, TState state) { callback(new TcpPipeline(socket), true, state); }
protected override void OnCreatePipeline <TState>(Socket socket, PipelineCallback <TState> callback, TState state) { var pipeline = new SslPipeline(socket); pipeline.Authenticate(certificate, callback, state); }