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)); }
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); }); }