#include "stdafx.h" #include "Connector.h" #include "Session.h" #include "SessionList.h" #include "IoHandler.h" //================================================================================================== /** @remarks connect¸¦ ½ÃµµÇÏ´Â ¾²·¹µå @par connect ¼º°ø½Ã ¼¼¼ÇÀ» ConnSuccessList¿¡ Ãß°¡ÇÏ°í ½ÇÆÐ½Ã ConnFailureList¿¡ Ãß°¡ÇÑ´Ù. */ //================================================================================================== unsigned __stdcall connect_thread(LPVOID param) { Connector* const connector = reinterpret_cast(param); // while (connector->shutdown_ == false) { DWORD wait_result = WaitForMultipleObjects(2, connector->event_handles_, false, INFINITE); if (wait_result - WAIT_OBJECT_0 == 0) { // Ä¿³ØÆ® À̺¥Æ® SessionList* const connecting_list = connector->connecting_list_; while (!connecting_list->empty()) { // Á¢¼Ó ´ë±â Å¥¿¡¼­ ¼¼¼ÇÀ» Çϳª ²¨³½´Ù. connecting_list->Lock(); Session* const session = connecting_list->front(); connecting_list->pop_front(); connecting_list->Unlock(); // Á¢¼Ó ½Ãµµ int err = ::connect(session->GetSocket(), (SOCKADDR*)(session->GetSockAddr()), sizeof(SOCKADDR_IN)); if (err == SOCKET_ERROR) { // Á¢¼Ó ½ÇÆÐ SessionList* connect_fail_list = connector->io_handler_->connect_fail_list_; connect_fail_list->Lock(); connect_fail_list->push_back(session); connect_fail_list->Unlock(); } else { // Á¢¼Ó ¼º°ø SessionList* connect_success_list = \ connector->io_handler_->connect_success_list_; connect_success_list->Lock(); connect_success_list->push_back(session); connect_success_list->Unlock(); } } } else if (wait_result - WAIT_OBJECT_0 == 1) { // ¾²·¹µå Á¾·á À̺¥Æ® break; } } return 0; }