// Api 윈도우 생성까지 대기
if (ApiState(APISTATE_NONE))
{
while (ApiState(APISTATE_NONE)) { ::Sleep(10); }
}
// Api가 이미 사용가능함
if (ApiState(APISTATE_USEABLE))
return APISTATE_USEABLE;
// Api 초기화
PostThreadMessage(WMU_POST_STARTUP, 0, 0);
while (ApiState(APISTATE_COMPLETE_INIT_CORE)) { ::Sleep(10); }
// Api 초기화 실패
if (ApiState(APISTATE_FAIL_INIT))
{
_apiState.Set(APISTATE_NONE);
return APISTATE_FAIL_INIT;
}
// Api 로그인
_LoginInfo* loginInfo = new _LoginInfo(id, password, officialPassword, serverType);
PostThreadMessage(WMU_POST_LOGIN, (WPARAM)loginInfo, 0);
int cnt = 0;
while (ApiState(APISTATE_COMPLETE_LOGIN))
{
// timeout
if (cnt > 500)
{
_apiState.Set(APISTATE_NONE);
return APISTATE_FAIL_LOGIN;
}
::Sleep(10);
++cnt;
}
// Api 로그인 실패
if (ApiState(APISTATE_FAIL_LOGIN))
{
_apiState.Set(APISTATE_NONE);
return APISTATE_FAIL_LOGIN;
}
return APISTATE_USEABLE;
세마포어?
이놈은 뭘하려는 거길레 쓸대도 없이 바닥급 api나 쪼물락 거리는 거지? 저짓거리 해봐야 qthread 같은거 동원한거에 비하면 고자같기 이를대가 없는데