示例#1
0
        private void TcpSock_OnClientConnect(BaseServerSocket sender, Socket s)
        {
            InternalSecureSocketConnectedClient client = new InternalSecureSocketConnectedClient(s, _packager);

            client.SetId(_guidGenerator());
            client.BeginReceive(ReceiveHandler);
            client.Send(cl => {
                Clients.Add(cl);
                client.OnDisconnect += (c, err) => {
                    Clients.Remove(c);
                };

                OnClientConnect?.Invoke(this, cl);
            }, new HandshakePacket(true, client.Id));
        }
示例#2
0
        public SecureSocketClient(TransportProtocol protocol, Packager packager)
        {
            Protocol         = protocol;
            _packager        = packager;
            _callbacks       = new CallbackManager <SecureSocketClient>();
            _remoteFunctions = new RemoteFunctionManager();

            _callbacks.SetHandler <HandshakePacket>((c, p) => {
                bool handshakeComplete = p.Success;
                _connection.SetId(p.Id);
                _handshakeEvent?.Set();
                _handshakeEvent?.Dispose();
                _handshakeEvent = null;
                OnHandshake?.Invoke(this, Id, handshakeComplete);
                _callbacks.RemoveHandler <HandshakePacket>();
            });

            _callbacks.SetHandler <RemoteCallResponse>((c, p) => {
                _remoteFunctions.RaiseFunction(p);
            });
        }