/////////////////////////////////////////////////////////////////////////////// // StopComm /////////////////////////////////////////////////////////////////////////////// // DESCRIPTION: // Close Socket and Stop Communication thread // PARAMETERS: // None /////////////////////////////////////////////////////////////////////////////// void CSocketComm::StopComm() { // Close Socket if (IsOpen()) { CloseComm(); } // Kill Thread if (IsStart()) { SleepEx(DEFAULT_TIMEOUT, TRUE); if (WaitForSingleObject(m_hThread, 1000L) == WAIT_TIMEOUT) TerminateThread(m_hThread, 1L); CloseHandle(m_hThread); m_hThread = NULL; } // Clear Address list if (!m_AddrList.empty()) { m_AddrList.clear(); } // Destroy Synchronization objects if (NULL != m_hMutex) { CloseHandle( m_hMutex ); m_hMutex = NULL; } }
/////////////////////////////////////////////////////////////////////////////// // WatchComm /////////////////////////////////////////////////////////////////////////////// // DESCRIPTION: // Starts Socket Communication Working thread // PARAMETERS: // None /////////////////////////////////////////////////////////////////////////////// bool CSocketComm::WatchComm() { if (!IsStart()) { if (IsOpen()) { HANDLE hThread; UINT uiThreadId = 0; hThread = (HANDLE)_beginthreadex(NULL, // Security attributes 0, // stack SocketThreadProc, // Thread proc this, // Thread param CREATE_SUSPENDED, // creation mode &uiThreadId); // Thread ID if ( NULL != hThread) { //SetThreadPriority(hThread, THREAD_PRIORITY_ABOVE_NORMAL); ResumeThread( hThread ); m_hThread = hThread; return true; } } } return false; }
/////////////////////////////////////////////////////////////////////////////// // SetServerState void CSocketComm::SetServerState(bool bServer) { if (!IsStart()) m_bServer = bServer; }
/////////////////////////////////////////////////////////////////////////////// // SetSmartAddressing : Address is included with message void CSocketComm::SetSmartAddressing(bool bSmartAddressing) { if (!IsStart()) m_bSmartAddressing = bSmartAddressing; }
void cHousingWarehouseDlg::UseIcon(cIcon* pIcon) { if(!pIcon || pIcon->GetType() != WT_HOUSING_STORED_ICON) return; cHousingStoredIcon* pStoredIcon = (cHousingStoredIcon*)pIcon; stFurniture* pstFuniture = pStoredIcon->GetLinkFurniture(); if(! pstFuniture) return; if(HOUSINGMGR->IsDoDecoration() && (pstFuniture->wState == eHOUSEFURNITURE_STATE_UNINSTALL || pstFuniture->wState == eHOUSEFURNITURE_STATE_KEEP)) { HOUSINGMGR->CancelDecoration(); } else if(pstFuniture->wState == eHOUSEFURNITURE_STATE_INSTALL) { return; } //091224 NYJ eObjectState_None가 아니면 리턴. if( (pstFuniture->wState == eHOUSEFURNITURE_STATE_UNINSTALL || pstFuniture->wState == eHOUSEFURNITURE_STATE_KEEP) && (HERO->GetState() != eObjectState_None && HERO->GetState() != eObjectState_Housing)) { CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(2010) /*“가구를 설치할 수 없는 상태입니다.”*/ ); return; } //090527 pdy 하우징 시스템메세지 꾸미기 모드가 아닐시 제한사항 [머터리얼교체] if( (pstFuniture->wState == eHOUSEFURNITURE_STATE_UNINSTALL || pstFuniture->wState == eHOUSEFURNITURE_STATE_KEEP) && HERO->GetState() != eObjectState_Housing ) { //CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg(1878) ); //1878 "꾸미기 모드일때만 사용하실 수 있습니다." //return; //091224 NYJ 꾸미기모드가 아니면 꾸미기 모드로 변환 HOUSINGMGR->RequestDecoRationMode(); HOUSINGMGR->SetDecorationModeTemp(); } // pStoredIcon->SetLock(TRUE) ; // 사용할 아이템을 잠근다. if( pstFuniture->bNotDelete ) //기본설치 품목일경우 아이템사용 없음 if(! IsDoor( pstFuniture->dwFurnitureIndex) ) //기본설치문은 아이템사용가능 if(! IsStart( pstFuniture->dwFurnitureIndex) ) //기본설치 스타트도 아이템사용가능 return; /* if( pstFuniture->wState == eHOUSEFURNITURE_STATE_INSTALL ) { //기본설치 품목이나 문류는 설치 불가 if( pstFuniture->bNotDelete || IsDoor( pstFuniture->dwFurnitureIndex ) ) { //090527 pdy 하우징 시스템메세지 기본제공가구 [설치해제] CHATMGR->AddMsg(CTC_SYSMSG, CHATMGR->GetChatMsg( 1888 ) ); //1888 "기본 물품은 설치해제 할 수 없습니다." } ////091223 NYJ - 내집창고에서 더블클릭으로 가구회수기능 제거. //else //{ // HOUSINGMGR->RequestUninstallDecoFromUseIcon(pstFuniture); //} return; } */ //설치중이아니면 가구꾸미기 시작 HOUSINGMGR->StartDecoration(pstFuniture); }