void FramedTcpListener::destroyConnection(FramedTcpConnection::Ptr conn) { mutex_lock lock(_mutex); _connections.erase(conn.get()); OSS_LOG_INFO( "FramedTcpListener::destroyConnection " << " connection removed - " << conn.get()); conn->stop(); }
void FramedTcpListener::addConnection(FramedTcpConnection::Ptr conn) { mutex_lock lock(_mutex); _connections[conn.get()] = conn; OSS_LOG_INFO( "FramedTcpListener::addConnection " << " connection accepted " << conn.get()); conn->start(); }
void SIPTCPConnectionManager::add(SIPTCPConnection::Ptr conn) { OSS::mutex_write_lock wlock(_rwConnectionsMutex); if (!conn->getIdentifier()) conn->setIdentifier(++_currentIdentifier); _connections[conn->getIdentifier()] = conn; OSS_LOG_INFO("SIPTCPConnection Added transport (" << conn->getIdentifier() << ") " << conn->getLocalAddress().toIpPortString() << "->" << conn->getRemoteAddress().toIpPortString() ); }
void SIPTCPConnectionManager::stop(SIPTCPConnection::Ptr conn) { OSS::mutex_write_lock wlock(_rwConnectionsMutex); OSS_LOG_INFO("Deleting SIPTCPConnection transport (" << conn->getIdentifier() << ") " << conn->getLocalAddress().toIpPortString() << "->" << conn->getRemoteAddress().toIpPortString() ); _connections.erase(conn->getIdentifier()); conn->stop(); }
SIPTCPConnection::Ptr SIPTCPConnectionManager::findConnectionById(OSS::UInt64 identifier) { OSS::mutex_read_lock rlock(_rwConnectionsMutex); if (_connections.find(identifier) != _connections.end()) { SIPTCPConnection::Ptr conn = _connections[identifier]; if (conn) { OSS_LOG_INFO("SIPTCPConnectionManager::findConnectionById got transport (" << conn->getIdentifier() << ") " << conn->getLocalAddress().toIpPortString() << "->" << conn->getRemoteAddress().toIpPortString() ); } return conn; } return SIPTCPConnection::Ptr(); }
void FramedTcpListener::run(const std::string& address, const std::string& port) { _pNewConnection = FramedTcpConnection::Ptr(new FramedTcpConnection(*this)); boost::asio::ip::tcp::resolver::query query(address, port); boost::asio::ip::tcp::endpoint endpoint = *_resolver.resolve(query); _acceptor.open(endpoint.protocol()); _acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); _acceptor.bind(endpoint); _acceptor.listen(); _acceptor.async_accept(dynamic_cast<FramedTcpConnection*>(_pNewConnection.get())->socket(), boost::bind(&FramedTcpListener::handleAccept, this, boost::asio::placeholders::error)); OSS_LOG_INFO( "FramedTcpListener::run " << " started accepting connections at bind address tcp://" << address << ":" << port); }