本文整理汇总了C++中network::Channel::pEndPoint方法的典型用法代码示例。如果您正苦于以下问题:C++ Channel::pEndPoint方法的具体用法?C++ Channel::pEndPoint怎么用?C++ Channel::pEndPoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类network::Channel
的用法示例。
在下文中一共展示了Channel::pEndPoint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: c_str
//-------------------------------------------------------------------------------------
void EntityMailbox::c_str(char* s, size_t size)
{
const char * mailboxName =
(type_ == MAILBOX_TYPE_CELL) ? "Cell" :
(type_ == MAILBOX_TYPE_BASE) ? "Base" :
(type_ == MAILBOX_TYPE_CLIENT) ? "Client" :
(type_ == MAILBOX_TYPE_BASE_VIA_CELL) ? "BaseViaCell" :
(type_ == MAILBOX_TYPE_CLIENT_VIA_CELL) ? "ClientViaCell" :
(type_ == MAILBOX_TYPE_CELL_VIA_BASE) ? "CellViaBase" :
(type_ == MAILBOX_TYPE_CLIENT_VIA_BASE) ? "ClientViaBase" : "???";
Network::Channel* pChannel = getChannel();
kbe_snprintf(s, size, "%s id:%d, utype:%u, component=%s[%" PRIu64 "], addr: %s.",
mailboxName, id_, utype_,
COMPONENT_NAME_EX(ENTITY_MAILBOX_COMPONENT_TYPE_MAPPING[type_]),
componentID_, (pChannel && pChannel->pEndPoint()) ? pChannel->addr().c_str() : "None");
}
示例2: reconnect
//-------------------------------------------------------------------------------------
bool InterfacesHandler_Interfaces::reconnect()
{
Network::Channel* pInterfacesChannel = Dbmgr::getSingleton().networkInterface().findChannel(g_kbeSrvConfig.interfacesAddr());
if(pInterfacesChannel)
{
if(!pInterfacesChannel->isDestroyed())
Dbmgr::getSingleton().networkInterface().deregisterChannel(pInterfacesChannel);
pInterfacesChannel->destroy();
Network::Channel::reclaimPoolObject(pInterfacesChannel);
}
Network::Address addr = g_kbeSrvConfig.interfacesAddr();
Network::EndPoint* pEndPoint = Network::EndPoint::createPoolObject();
pEndPoint->addr(addr);
pEndPoint->socket(SOCK_STREAM);
if (!pEndPoint->good())
{
ERROR_MSG("InterfacesHandler_Interfaces::initialize: couldn't create a socket\n");
return true;
}
pEndPoint->setnonblocking(true);
pEndPoint->setnodelay(true);
pInterfacesChannel = Network::Channel::createPoolObject();
bool ret = pInterfacesChannel->initialize(Dbmgr::getSingleton().networkInterface(), pEndPoint, Network::Channel::INTERNAL);
if(!ret)
{
ERROR_MSG(fmt::format("InterfacesHandler_Interfaces::initialize: initialize({}) is failed!\n",
pInterfacesChannel->c_str()));
pInterfacesChannel->destroy();
Network::Channel::reclaimPoolObject(pInterfacesChannel);
return 0;
}
if(pInterfacesChannel->pEndPoint()->connect() == -1)
{
struct timeval tv = { 0, 1000000 }; // 1000ms
fd_set fds;
FD_ZERO(&fds);
FD_SET((int)(*pInterfacesChannel->pEndPoint()), &fds);
bool connected = false;
int selgot = select((*pInterfacesChannel->pEndPoint())+1, &fds, &fds, NULL, &tv);
if(selgot > 0)
{
int error;
socklen_t len = sizeof(error);
#if KBE_PLATFORM == PLATFORM_WIN32
getsockopt(int(*pInterfacesChannel->pEndPoint()), SOL_SOCKET, SO_ERROR, (char*)&error, &len);
#else
getsockopt(int(*pInterfacesChannel->pEndPoint()), SOL_SOCKET, SO_ERROR, &error, &len);
#endif
if(0 == error)
connected = true;
}
if(!connected)
{
ERROR_MSG(fmt::format("InterfacesHandler_Interfaces::reconnect(): couldn't connect to:{}\n",
pInterfacesChannel->pEndPoint()->addr().c_str()));
pInterfacesChannel->destroy();
Network::Channel::reclaimPoolObject(pInterfacesChannel);
return false;
}
}
// 不检查超时
pInterfacesChannel->stopInactivityDetection();
Dbmgr::getSingleton().networkInterface().registerChannel(pInterfacesChannel);
return true;
}