当前位置: 首页>>代码示例>>C++>>正文


C++ TcpConnectionPtr::name方法代码示例

本文整理汇总了C++中TcpConnectionPtr::name方法的典型用法代码示例。如果您正苦于以下问题:C++ TcpConnectionPtr::name方法的具体用法?C++ TcpConnectionPtr::name怎么用?C++ TcpConnectionPtr::name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TcpConnectionPtr的用法示例。


在下文中一共展示了TcpConnectionPtr::name方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: doUnsubscribe

	void doUnsubscribe(const TcpConnectionPtr& conn, const string& topic)
	{
		LOG_OK << conn->name() << " unsub " << topic;

		getTopic(topic).remove(conn);

		// topic could be the one to be destroyed, so don't use it after erasing.
		//客户端不订阅某个topic,就销毁
		ConnectionSubscription* connSub = boost::any_cast<ConnectionSubscription>(conn->getMutableContext());

		connSub->erase(topic);

	}
开发者ID:1suming,项目名称:msmuduo,代码行数:13,代码来源:hub.cpp

示例2: onGetIncrusrstk

void ProxyServer::onGetIncrusrstk(const TcpConnectionPtr& conn,const IncrstkcfgPtr& message,Timestamp)
{
	LOG_INFO << "onGetIncrusrstk protobuf received...";
	std::string taskid = message->taskid();
	int id = boost::lexical_cast<int>(message->incrementid());
	int count = boost::lexical_cast<int>(message->count());
	char sztask[512];
	sprintf(sztask,"%s:%d;%s:%s;%s:%d;%s:%d",TASK_TYPE,GET_INCR_USERSTK,TASK_ID,taskid.c_str(),MOBILE_INCR,id,QUERY_COUNT,count);
	LOG_INFO << "taskid " <<taskid << " id " << id;
//	m_redis.command(boost::bind(&ProxyServer::onPushTask,this,_1,_2),"lpush test %s",sztask);

	m_redis.command(boost::bind(&ProxyServer::onPushTask,this,_1,_2),"lpush %s %s",m_redis.getPushTitle().c_str(),sztask);
	m_taskconns[taskid] = std::string(conn->name().c_str());
}
开发者ID:7zkeeper,项目名称:emcds,代码行数:14,代码来源:proxyserver.cpp

示例3: onMessage

void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp receiveTime)
{


	printf("onMessage(): tid=%d received %d bytes from connection [%s] at %s\n",
		CurrentThread::tid(),
		buf->readableBytes(),
		conn->name().c_str(),
		receiveTime.toFormattedString().c_str());

	string str(buf->peek(), buf->readableBytes());
	printf("str:%s\n", str.c_str());

	buf->retrieveAll();

}
开发者ID:1suming,项目名称:msmuduo,代码行数:16,代码来源:TcpServer_test_tcpserver3.cpp

示例4: newConnection

void LClient::newConnection( const TcpConnectionPtr& session )
{
    connLost_ = 0;
    connection_ = session;
    if( connection_ )
    {
        tagHello hello;
        strncpy(hello.msg, "Copyright 2010 by backkom. All rights reserved."
                "This software is the confidential and proprietary information of backkom."
                "('Confidential Information'). You shall not disclose such Confidential -"
                "Information and shall use it only in accordance with the terms of the - "
                "license agreement you entered into with backkom", 128);
        connection_->sendCmd(&hello);
        ++display_;
    }
    LOGD("Hello-%s", session->name().c_str());
}
开发者ID:imace,项目名称:kkS,代码行数:17,代码来源:LClient.cpp

示例5: onSetsingleusrstk

void ProxyServer::onSetsingleusrstk(const TcpConnectionPtr& conn,const  SetsingleusrstkPtr& message,Timestamp)
{
	LOG4CXX_INFO(log4cxx::Logger::getLogger(PROXYSERVER),"recv SetSingleUsrStkCfg!");
	LOG_INFO << "onSetsingleusrstk protobuf received...";
//	LOG_INFO << message->DebugString() ;
	std::string taskid = message->taskid();
	std::string pushdata =  pb2json(*message);
	stringReplace(pushdata," ","");
	char szconn[128] = {0};

	sprintf(szconn,"\"conn\":\"%s\",\"%s\":\"%d\",",m_redis.getPushTitle().c_str(),TASK_TYPE,SET_USER_STOCK);
//	sprintf(szconn,"\"conn\":\"%s\",\"%s\":\"%d\",",conn->name().c_str(),TASK_TYPE,SET_USER_STOCK);
	pushdata.insert(1,szconn);
	LOG_INFO << m_redis.getPushTitle() << ": " << pushdata;
	m_redis.command(boost::bind(&ProxyServer::onPushTask,this,_1,_2),
					"lpush %s %s",m_redis.getPushTitle().c_str(),pushdata.c_str());
	m_taskconns[taskid] = std::string(conn->name().c_str());
}
开发者ID:7zkeeper,项目名称:emcds,代码行数:18,代码来源:proxyserver.cpp

示例6: doSubscribe

	//TODO:这个函数没有处理客户端sub的topic不存在的情况
	void doSubscribe(const TcpConnectionPtr& conn, const string& topic)
	{
		//getMutableContext返回的是:boost::any*
		//为什么any_cast用的是ConnectionSubscripton,而不是指针???看boost:any_cast原型
		/*
		 template<typename ValueType>
		 ValueType * any_cast(any * operand)
		 */
		LOG_OK << conn->name() << " sub " << topic;
		ConnectionSubscription* connSub =
			boost::any_cast<ConnectionSubscription>(conn->getMutableContext());
		 
		
		connSub->insert(topic);//保存这个客户端订阅的主题
		getTopic(topic).add(conn);


 	}
开发者ID:1suming,项目名称:msmuduo,代码行数:19,代码来源:hub.cpp

示例7: onClientConnection

void ProxyServer::onClientConnection(const TcpConnectionPtr& conn)
{
	LOG_TRACE << "Client " << conn->peerAddress().toIpPort() << " -> "
			<< conn->localAddress().toIpPort() << " is " 
			<< (conn->connected() ? "online" : "offline");
	
	std::string connname(conn->name().c_str());
	if(conn->connected())
	{
		m_conns[connname] = conn;
	//	m_redis.command(boost::bind(&ProxyServer::onRedisGetResult,this,_1,_2),"BRPOP test 0");
	}
	else
	{
		LOG_INFO << "connname offline " << connname;
		m_conns.erase(connname);
	}	
			
}
开发者ID:7zkeeper,项目名称:emcds,代码行数:19,代码来源:proxyserver.cpp

示例8: onMessage

void MyTcpClient::onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp receiveTime)
{
    if (buf->readableBytes() >= sizeof(int32_t))
    {
        /*
        const void* data = buf->peek();
        int32_t be32 = *static_cast<const int32_t*>(data);
        buf->retrieve(sizeof(int32_t));
        time_t time = sockets::networkToHost32(be32);
        Timestamp ts(implicit_cast<uint64_t>(time) * Timestamp::kMicroSecondsPerSecond);
        LOG_INFO << "Server time = " << time << ", " << ts.toFormattedString();
        */
        std::string str = static_cast<std::string>(buf->retrieveAllAsString());
        LOG_INFO << "Server time = " << str;
    }
    else
    {
        LOG_INFO << conn->name() << " no enough data " << buf->readableBytes()
                 << " at " << receiveTime.toFormattedString();
    }
}
开发者ID:catxuxiang,项目名称:SocketTest,代码行数:21,代码来源:mytcpclient.cpp

示例9: onMessage

 void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp){
     LOG_DEBUG << conn->name();
     size_t len = buf->readableBytes();
     while(len >= kCells + 2){
         const char* crlf = buf->findCRLF();
         if(crlf){
             string request(buf->peek(), crlf);
             buf->retrieveUntil(crlf + 2);
             len = buf->readableBytes();
             if(!processRequest(conn, request)){
                 conn->send("Bad Request! \r\n");
                 conn->shutdown();
                 break;
             }
         }else if(len > 100){ // id + ":" + kCells + "\r\n"
             conn->send("Id too long!\r\n");
             conn->shutdown();
             break;
         }else{
             break;
         }
     }
 }
开发者ID:xujie-nm,项目名称:learnMuduo,代码行数:23,代码来源:server_multiloop.cpp

示例10: onMessage

void BaseSvr::onMessage(const TcpConnectionPtr& conn, Buffer* buf)
{
    LOG_INFO << "accept msg from <" << conn->name() << ">";

    string request(buf->peek(), buf->beginWrite());
    LOG_INFO << "received msg from client<" << conn->peerAddress().IpAndPort() << "> : <" << request << ">";

    conn->send(request);

    size_t len = 0;
    while((len = buf->readableBytes()) > 1)
    {
        // 本消息包除头部外剩余部分的长度
        size_t packetLen = endian::networkToHost16(buf->peekInt16());
        if(packetLen > len)
        {///< 缓冲区剩余空间反而大于消息包长度了 >
            conn->send("peek msg fail: packetLen > len of buffer\r\n");
            conn->shutdown();
            break;
        }

        if(false == protobufapi::checksum(buf->peek() + HEADER_LENGTH, packetLen))
        {///< 校验结果不匹配 >
            conn->send("server check sum error. your msg is discard");
            conn->shutdown();
            break;
        }

        Buffer *pMsg = new Buffer();
        pMsg->retrieveAll();
        pMsg->append(buf->peek() + sizeof int16_t, sizeof int16_t + packetLen - TAIL_LENGTH);

        m_msgQueue.put(pMsg);

        buf->retrieve(packetLen + HEADER_LENGTH);
    }
}
开发者ID:mildrock,项目名称:dummy,代码行数:37,代码来源:BaseSvr.cpp

示例11: processRequest

    bool processRequest(const TcpConnectionPtr& conn, const kimgbo::string& request)
    {
        kimgbo::string id;
        kimgbo::string puzzle;
        bool goodRequest = true;

        kimgbo::string::const_iterator colon = find(request.begin(), request.end(), ':');
        if (colon != request.end())
        {
            id.assign(request.begin(), colon);
            puzzle.assign(colon+1, request.end());
        }
        else
        {
            puzzle = request;
        }

        if (puzzle.size() == implicit_cast<size_t>(kCells))
        {
            LOG_DEBUG << conn->name();
            kimgbo::string result = solveSudoku(puzzle);
            if (id.empty())
            {
                conn->send(result+"\r\n");
            }
            else
            {
                conn->send(id+":"+result+"\r\n");
            }
        }
        else
        {
            goodRequest = false;
        }
        return goodRequest;
    }
开发者ID:kimg-bo,项目名称:kimgbo,代码行数:36,代码来源:sever_multiloop.cpp

示例12: onUnknownMessage

void ProxyServer::onUnknownMessage(const TcpConnectionPtr& conn,const MessagePtr& message,Timestamp)
{
	conn->shutdown();
	m_conns.erase(std::string(conn->name().c_str()));
}
开发者ID:7zkeeper,项目名称:emcds,代码行数:5,代码来源:proxyserver.cpp

示例13: dealRedisIncrstkcfg

void ProxyServer::dealRedisIncrstkcfg(std::string result)
{
	dataserver::IncrUsrStkCfg incr_stkcfg;
	size_t count = 0;
	std::stringstream stream;
    stream<<result;
    std::string type,user,stk,bulletin,maxprice,minprice,run,range,incr;
    try
    {       
	    ptree pt,p1,p2,p3,p4;
	    read_json<ptree>(stream,pt);
	    type = pt.get<std::string>(TASK_TYPE);
	    std::cout<<"tasktype: "<<type<<std::endl;
	    p1 = pt.get_child(USER);
		incr_stkcfg.set_taskid(boost::lexical_cast<std::string>(GET_INCR_USERSTK));
	    for(ptree::iterator it = p1.begin(); it != p1.end(); it++)
	    {
			p2 = it->second;
			user = p2.get<std::string>(USERSTOCK_UID);
			std::cout<<"UID: "<<user<<std::endl;

			dataserver::SingleUserStkCfg* user_stkcfg = incr_stkcfg.add_items();
			user_stkcfg->set_usrid(user);

			p3 = p2.get_child(USERSTOCK_STOCKS);
			for(ptree::iterator iter = p3.begin(); iter != p3.end(); iter++)
			{
				p4 = iter->second;
				stk = p4.get<std::string>(USERSTOCK_STOCKCODE);
				bulletin = p4.get(USERSTOCK_BULLETIN,"1");
				incr = p4.get<std::string>(USERSTOCK_INCR);
				maxprice = p4.get(USERSTOCK_MAXPRICE,"-1.0");
				minprice = p4.get(USERSTOCK_MINPRICE,"-1.0");
				run = p4.get(USERSTOCK_RUN,"1");
				range = p4.get(USERSTOCK_RANGE,"-10000");
				std::cout<<stk<<","<<bulletin<<","<<incr<<std::endl;

				dataserver::UserStockCfg* pUsercfg = user_stkcfg->add_stkcfg();
				pUsercfg->set_stockcode(stk);
				pUsercfg->set_bulletin(boost::lexical_cast<int>(bulletin));
				pUsercfg->set_max_price(boost::lexical_cast<double>(maxprice));
				pUsercfg->set_min_price(boost::lexical_cast<double>(minprice));
				pUsercfg->set_run(boost::lexical_cast<int>(run));
				pUsercfg->set_incrementid(boost::lexical_cast<long long int>(incr));
				count++;
			 }
		}
	}
	catch(ptree_error& e)
	{
		std::cout << "error for ptree parse.." << std::endl;
	}
	google::protobuf::Message* protomsg = NULL;
	protomsg = &incr_stkcfg;
	std::string task = "";
	std::string connname = m_taskconns[task];
	LOG_INFO << "connname " << connname << ", task "<<task;
	for(ConnectionMap::iterator it(m_conns.begin()); it != m_conns.end(); ++it)
	{
		TcpConnectionPtr conn = it->second;
  		if(connname == std::string(conn->name().c_str()))
  		{			
			m_codec.send(conn,*protomsg);
    		break;
  		}
	}
}
开发者ID:7zkeeper,项目名称:emcds,代码行数:67,代码来源:proxyserver.cpp

示例14: onRemoveConnection

void ProxyServer::onRemoveConnection(const TcpConnectionPtr& conn)
{
	m_conns.erase(std::string(conn->name().c_str()));
}
开发者ID:7zkeeper,项目名称:emcds,代码行数:4,代码来源:proxyserver.cpp

示例15: delConnection

void LClient::delConnection( const TcpConnectionPtr& session )
{
    connLost_ = 1;
    LOGD("Byte-%s", session->name().c_str());
}
开发者ID:imace,项目名称:kkS,代码行数:5,代码来源:LClient.cpp


注:本文中的TcpConnectionPtr::name方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。