DWORD recv_cjhb::ThreadProc(void) { int exit_code=0; clhb_ans ca; while(this->IsRunning()) { //recv cjhb if(RecvBuffer((char*)&ca,sizeof(ca))) { //invoke OnRecvCJHB OnRecvCJHB(&(ca.cr)); } else { exit_code=-1; break; } } //invoke OnTerminate OnTerminate(exit_code); Disconnect(); return 0; }
// virtual BOOL FW_Cmd::OnCmdMsg( UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo ) { BOOL bOK = CCmdTarget::OnCmdMsg( nID, nCode, pExtra, pHandlerInfo ); if(!bOK) { if(nID == GetCmdId()) { switch(nCode) { case CN_COMMAND: { // pHandlerInfo!=NULL means it is checking whether the command should be enable, // otherwise the command is executed if(!pHandlerInfo) { if(!OnExecute()) OnTerminate(); } bOK = TRUE; } break; case CN_UPDATE_COMMAND_UI: { OnUpdateCmdUI((CCmdUI*)pExtra); bOK = TRUE; // Enable the command } break; default: break; } } } return bOK; }
void Do(void) { if(m_busy_cursor == NULL)m_busy_cursor = new wxBusyCursor(); if (m_program->m_machine.file_name == _T("not found")) { wxMessageBox(_T("Machine name (defined in Program Properties) not found")); } // End if - then else { #ifdef WIN32 Execute(wxString(_T("\"")) + theApp.GetDllFolder() + _T("\\nc_read.bat\" ") + m_program->m_machine.file_name + _T(" \"") + m_filename + _T("\" ") + _T("\"") + theApp.GetDllFolder() + _T("\"")); #else #ifdef RUNINPLACE wxString path(theApp.GetDllFolder() +_T("/")); #else #ifdef CMAKE_UNIX wxString path(_T("/usr/lib/heekscnc/")); #else wxString path(theApp.GetDllFolder() + _T("/../heekscnc/")); #endif #endif if (m_program->m_use_internal_backplotting == false) { Execute(wxString(_T("python \"")) + path + wxString(_T("backplot.py\" \"")) + m_program->m_machine.file_name + wxString(_T("\" \"")) + m_filename + wxString(_T("\"")) ); } else { OnTerminate(m_pid, 0); } #endif } // End if - else }
void Kill() { wxProcess::Kill(GetPid()); // wxProcess::Kill doesn't trigger a call to OnTerminate() normally... // but we still need to call it! OnTerminate(0, -1); }
VOID CGTClient::Disconnect() { if (m_poConnection) { m_poConnection->Disconnect(); OnTerminate(); } }
size_t nwxProcess::ProcessIO(size_t nLimit) { size_t nRtn = 0; bool bInputClosed = false; if(!m_bPaused) { if(!IsInputOpened()) { if(m_sBuffer.Len()) { m_sBuffer += "\n"; ProcessLine(m_sBuffer.utf8_str(),m_sBuffer.Len(),false); m_sBuffer.Empty(); } bInputClosed = true; } else { while(IsInputAvailable() && (nRtn < nLimit)) { nRtn += ProcessIO(GetInputStream(),m_sBuffer,false); } } if(!IsErrorOpened()) { if(m_sBufferError.Len()) { m_sBufferError += "\n"; ProcessLine(m_sBufferError.utf8_str(),m_sBufferError.Len(),true); m_sBufferError.Empty(); } if(bInputClosed && m_bRunning) { m_bRunning = false; // we are sometimes not notified when process ends #ifndef __WXMSW__ // need to clean up zombie because wx sometimes // fails to do this on the macintosh int nStatLoc; pid_t nPID; nPID = waitpid((pid_t)m_nPID,&nStatLoc,0); OnTerminate(m_nPID,nStatLoc); #endif } } else { while(IsErrorAvailable() && (nRtn < nLimit)) { nRtn += ProcessIO(GetErrorStream(),m_sBufferError,true); } } } return nRtn; }
void CThread::Terminate() { if (m_hThread != NULL) { TerminateThread(m_hThread, 0); CloseHandle(m_hThread); OnTerminate(); m_hThread = NULL; m_dwThreadID = 0; } }
void SampleApp::TerminateD3D11() { if (d3dDeviceContext != nullptr) { d3dDeviceContext->ClearState(); d3dDeviceContext->Flush(); } OnTerminate(); ReleaseDefaultRenderTarget(); ReleaseDefaultDepthStencil(); SAFE_RELEASE(swapChain); SAFE_RELEASE(d3dDeviceContext); SAFE_RELEASE(d3dDevice); }
VOID CSDPipeChannel::OnReport(UINT16 wBusinessID, INT32 nErrCode) { if (PIPE_SUCCESS == nErrCode) { OnEstablish(); } else if (PIPE_DISCONNECT == nErrCode) { OnTerminate(); } else { OnError(nErrCode); } }
void CApplication::Terminate(void) { // Write to log CLog::Get()->Write(ELogMessageType_MESSAGE, "[Application] Terminating..."); // Do any additional termination tasks here OnTerminate(); // Destroy the window glutDestroyWindow(mWindow); // Write to log CLog::Get()->Write(ELogMessageType_MESSAGE, "[Application] Application terminated."); // Shutdown error log CLog::Get()->Terminate(); }
/* ------------------------------------------------------------------------- */ static void OnIoEvent(EL_TEvent* event, short events, Srv_TSession *const session) { int ret = -EXIT_SUCCESS; TServant *const servant = (TServant*)session; do { if (events & POLLIN) { TRxControl *const ctrl = &servant->m_rx; ctrl->m_n_received = 0; assert(ctrl->m_handler); if (-EXIT_SUCCESS != (ret = ctrl->m_handler(servant))) break; if (0 == ctrl->m_n_received) { /* TODO: unit test should detect this case */ /* We supposed to receive something but we did not. */ ret = -EXIT_FAILURE; } } if (events & POLLOUT) { TTxControl *const ctrl = &servant->m_tx; assert(ctrl->m_handler); if (-EXIT_SUCCESS != (ret = ctrl->m_handler(servant))) break; } } while(0); if (-EXIT_SUCCESS != ret) { OnTerminate(servant); } }
// KeyDown message // virtual void FW_Cmd::OnKeyDown(CWnd* pWnd, UINT nChar, UINT nRepCnt, UINT nFlags) { if(nChar == VK_ESCAPE) OnTerminate(); }