示例#1
0
	void onConnection(const TcpConnectionPtr& conn)
	{
		if (conn->connected())
		{
			//channel_.reset(new RpcChannel(conn));
			conn->setTcpNoDelay(true);
			channel_->setConnection(conn);
			allConnected_->countDown();
		}
	}
示例#2
0
/***************************************************
Description:    处理新的TCP连接或断开
Input:          无
Output:         无
Return:         无
***************************************************/
void TCPServer::onServerConnection(const TcpConnectionPtr& conn)
{
    conn->setTcpNoDelay(true);
    LOG_INFO << conn->peerAddress().toIpPort() << " -> "
             << conn->localAddress().toIpPort() << " is "
             << (conn->connected() ? "UP" : "DOWN");

    if(!conn->connected())
    {
        clearConnectionInfo(conn);
    }
}
示例#3
0
void serverConnectionCallback(const TcpConnectionPtr& conn)
{
	LOG_TRACE << conn->name() << " " << conn->peerAddress().toIpPort() << " -> "
        		<< conn->localAddress().toIpPort() << " is "
        		<< (conn->connected() ? "UP" : "DOWN");
  if (conn->connected())
  {
    conn->setTcpNoDelay(true);
  }
  else
  {
  }
}
示例#4
0
void clientConnectionCallback(const TcpConnectionPtr& conn)
{
	LOG_TRACE << conn->localAddress().toIpPort() << " -> "
        		<< conn->peerAddress().toIpPort() << " is "
        		<< (conn->connected() ? "UP" : "DOWN");
  if (conn->connected())
  {
    clientConnection = conn;
    conn->setTcpNoDelay(true);
  }
  else
  {
    clientConnection.reset();
  }
}
示例#5
0
	void onConnection(const TcpConnectionPtr& conn)
	{
		LOG_TRACE << conn->localAddress().toIpPort() << " -> "
			<< conn->peerAddress().toIpPort() << " is "
			<< (conn->connected() ? "UP" : "DOWN");

		if (conn->connected())
		{
			conn->setTcpNoDelay(true);
			conn->send(message_);
		}
		else
		{
			loop_->quit();
		}
	}
示例#6
0
void onServerConnection(const TcpConnectionPtr& conn)
{
	LOG_DEBUG << conn->name() << (conn->connected() ? " UP" : " DOWN");

	if (conn->connected())
	{
		conn->setTcpNoDelay(true);

		TunnelPtr tunnel(new Tunnel(g_eventLoop, g_serverAddr, conn));

		tunnel->setup();
		tunnel->connect();
		g_tunnels[conn->name()] = tunnel;

	}
	else
	{
		std::map<string, TunnelPtr>::iterator it = g_tunnels.find(conn->name());
	}
}
示例#7
0
/***************************************************
Description:    处理新的HBaseProxy连接或者连接断开情况
Input:          conn:TCP连接
Output:         无
Return:         无
***************************************************/
void TCPServer::onHBaseProxyConnection(const TcpConnectionPtr &conn)
{
    if(conn->connected())
    {
        conn->setTcpNoDelay(true);
        LOG_INFO << "Connect to HBaseProxy successfully";
        LocalConnections::instance()[HBase] = conn;
        //发送以前发送失败的消息
        for(Messages::iterator it = UnSendMessages::instance()[HBase].begin();
            it != UnSendMessages::instance()[HBase].end();
            ++it)
        {
            protoCodec_.send(conn, *it);
            //防止过快发送
            usleep(1);
        }
        UnSendMessages::instance()[HBase].clear();
    }
    else
    {
        LOG_ERROR << "Lost connection to HBaseProxy";
    }
}
示例#8
0
/*
 * private functions
 *
 */
void tcp_server::onConnection(const TcpConnectionPtr& conn)
{
	LOG_DEBUG << "tcp_server - " << conn->peerAddress().toIpPort() << " -> " << conn->localAddress().toIpPort() << " is "
			<< (conn->connected() ? "UP" : "DOWN");
	
	if (conn->connected())
	{
		++numConnected_;
		if (numConnected_ > kMaxConnections_)
		{
			conn->shutdown();
		}
		else
		{
			conn->setTcpNoDelay(true);
		}
	}
	else
	{
		--numConnected_;
	}
	
	LOG_DEBUG << "numConnected = " << numConnected_;
}