本文整理汇总了C++中CSession::setHandle方法的典型用法代码示例。如果您正苦于以下问题:C++ CSession::setHandle方法的具体用法?C++ CSession::setHandle怎么用?C++ CSession::setHandle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSession
的用法示例。
在下文中一共展示了CSession::setHandle方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addServerLinker
void CWorkThreadEvent::addServerLinker(struct event_base *pMainBase,
CSessionManager *pSessionManager, OrderMsg &stOrderMsg)
{
struct bufferevent *pBev = NULL;
CSession *pSession = NULL;
CServerLinker *pServerLinker = (CServerLinker *)stOrderMsg.pHandle;
if (NULL == pServerLinker)
{
Q_Printf("%s", Q_EXCEPTION_NULLPOINTER);
return;
}
if (Q_INVALID_SOCK == pServerLinker->getSock())
{
Q_Printf("%s", "invalid socket");
return;
}
(void)evutil_make_socket_nonblocking(pServerLinker->getSock());
pBev = bufferevent_socket_new(pMainBase, pServerLinker->getSock(),
BEV_OPT_CLOSE_ON_FREE);
if (NULL == pBev)
{
Q_Printf("%s", "bufferevent_socket_new error.");
return;
}
if (Q_RTN_OK != pSessionManager->addSession(pBev))
{
bufferevent_free(pBev);
Q_Printf("%s", "add session error.");
return;
}
bufferevent_setcb(pBev, workThreadReadCB, NULL, workThreadEventCB,
pSessionManager);
if (Q_RTN_OK != bufferevent_enable(pBev, EV_READ | EV_WRITE))
{
pSessionManager->dellSession(pBev);
bufferevent_free(pBev);
pBev = NULL;
Q_Printf("%s", "bufferevent_enable error.");
return;
}
pSessionManager->addServerLinker(pServerLinker->getLinkerName(), pBev);
pSession = pSessionManager->getSession(pBev);
pSession->setHandle(pServerLinker);
pSession->setServerLinker(true);
pServerLinker->setLinked(true);
pSessionManager->getInterface()->onLinkedServer(pSession);
}