Client* ClientApp::openClient(const String& name, const NetworkAddress& address, synergy::Screen* screen) { Client* client = new Client( m_events, name, address, new TCPSocketFactory(m_events, getSocketMultiplexer()), screen, args()); try { m_events->adoptHandler( m_events->forClient().connected(), client->getEventTarget(), new TMethodEventJob<ClientApp>(this, &ClientApp::handleClientConnected)); m_events->adoptHandler( m_events->forClient().connectionFailed(), client->getEventTarget(), new TMethodEventJob<ClientApp>(this, &ClientApp::handleClientFailed)); m_events->adoptHandler( m_events->forClient().disconnected(), client->getEventTarget(), new TMethodEventJob<ClientApp>(this, &ClientApp::handleClientDisconnected)); } catch (std::bad_alloc &ba) { delete client; throw ba; } return client; }
ClientListener* ServerApp::openClientListener(const NetworkAddress& address) { ClientListener* listen = new ClientListener( address, new TCPSocketFactory(m_events, getSocketMultiplexer()), m_events, args().m_enableCrypto); m_events->adoptHandler( m_events->forClientListener().connected(), listen, new TMethodEventJob<ServerApp>( this, &ServerApp::handleClientConnected, listen)); return listen; }
CClientListener* CServerApp::openClientListener(const CNetworkAddress& address) { CClientListener* listen = new CClientListener( address, new CTCPSocketFactory(m_events, getSocketMultiplexer()), NULL, args().m_crypto, m_events); m_events->adoptHandler( m_events->forCClientListener().connected(), listen, new TMethodEventJob<CServerApp>( this, &CServerApp::handleClientConnected, listen)); return listen; }