本文整理汇总了C++中NetworkManager::onDisconnect方法的典型用法代码示例。如果您正苦于以下问题:C++ NetworkManager::onDisconnect方法的具体用法?C++ NetworkManager::onDisconnect怎么用?C++ NetworkManager::onDisconnect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetworkManager
的用法示例。
在下文中一共展示了NetworkManager::onDisconnect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: start
DWORD WINAPI NetworkManager::start(LPVOID lpParam)
{
HANDLE threads[2];
unsigned long exitCodes[2];
NetworkManager* manager = (NetworkManager*)lpParam;
NetworkDevice device = manager->getDevice();
while (!manager->quit)
{
// connect to server
while (!device.isConnected() && !manager->quit)
device.connect(manager->server, manager->port);
if (device.isConnected())
{
// start send and receive threads
threads[0] = ::CreateThread(0, 0, NetworkManager::send, lpParam, 0, 0);
threads[1] = ::CreateThread(0, 0, NetworkManager::receive, lpParam, 0, 0);
// monitor threads
while (device.isConnected())
{
::Sleep(100);
// check if threads are still alive
for (unsigned i = 0; i < 2; ++i)
::GetExitCodeThread(threads[i], &exitCodes[i]);
// if quit flag is set or threads have finished
if (manager->quit || exitCodes[0] != STILL_ACTIVE || exitCodes[1] != STILL_ACTIVE)
{
device.disconnect();
::WaitForMultipleObjects(2, threads, true, INFINITE);
for (unsigned i = 0; i < 2; ++i)
::CloseHandle(threads[i]);
manager->inbox.clear();
manager->onDisconnect();
manager->outbox.clear();
}
}
}
}
return 0;
}