Пример #1
0
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;
}
Пример #2
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;
}
Пример #3
0
	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
	}
Пример #4
0
    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);
    }
Пример #5
0
VOID CGTClient::Disconnect()
{
    if (m_poConnection)
    {
        m_poConnection->Disconnect();
        OnTerminate();
    }
}
Пример #6
0
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;
}
Пример #7
0
void CThread::Terminate()
{
	if (m_hThread != NULL)
	{	
		TerminateThread(m_hThread, 0);
		CloseHandle(m_hThread);
		OnTerminate();
		m_hThread = NULL;
		m_dwThreadID = 0;
	}
}
Пример #8
0
void SampleApp::TerminateD3D11()
{
    if (d3dDeviceContext != nullptr)
    {
        d3dDeviceContext->ClearState();
        d3dDeviceContext->Flush();
    }
    OnTerminate();
    ReleaseDefaultRenderTarget();
    ReleaseDefaultDepthStencil();
    SAFE_RELEASE(swapChain);
    SAFE_RELEASE(d3dDeviceContext);
    SAFE_RELEASE(d3dDevice);
}
Пример #9
0
	VOID CSDPipeChannel::OnReport(UINT16 wBusinessID, INT32 nErrCode)
	{
		if (PIPE_SUCCESS == nErrCode)
		{
			OnEstablish();
		}
		else if (PIPE_DISCONNECT == nErrCode)
		{
			OnTerminate();
		}
		else 
		{
			OnError(nErrCode);
		}
	}
Пример #10
0
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();
}
Пример #11
0
/* ------------------------------------------------------------------------- */
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);
    }
}
Пример #12
0
// KeyDown message
// virtual 
void FW_Cmd::OnKeyDown(CWnd* pWnd, UINT nChar, UINT nRepCnt, UINT nFlags)
{
	if(nChar == VK_ESCAPE)
		OnTerminate();
}