// Get Master List button click void dlgMain::OnGetList(wxCommandEvent &event) { // prevent reentrancy static wxRecursionGuardFlag s_rgf; wxRecursionGuard recursion_guard(s_rgf); if (recursion_guard.IsInside()) return; if (GetThread() && GetThread()->IsRunning()) return; m_LstCtrlServers->DeleteAllItems(); m_LstCtrlPlayers->DeleteAllItems(); QueriedServers = 0; TotalPlayers = 0; mtcs_Request.Signal = mtcs_getmaster; if (GetThread() && GetThread()->IsRunning()) return; // Create monitor thread and run it if (this->wxThreadHelper::Create() != wxTHREAD_NO_ERROR) { wxMessageBox(_T("Could not create monitor thread!"), _T("Error"), wxOK | wxICON_ERROR); wxExit(); } GetThread()->Run(); }
void dlgMain::OnRefreshServer(wxCommandEvent &event) { // prevent reentrancy static wxRecursionGuardFlag s_rgf; wxRecursionGuard recursion_guard(s_rgf); if (recursion_guard.IsInside()) return; if (!m_LstCtrlServers->GetItemCount() || !m_LstCtrlServers->GetSelectedItemCount()) return; m_LstCtrlPlayers->DeleteAllItems(); wxInt32 listindex = m_LstCtrlServers->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); wxListItem item; item.SetId(listindex); item.SetColumn(7); item.SetMask(wxLIST_MASK_TEXT); m_LstCtrlServers->GetItem(item); wxInt32 arrayindex = FindServer(item.GetText()); if (arrayindex == -1) return; TotalPlayers -= QServer[arrayindex].info.numplayers; mtcs_Request.Signal = mtcs_getsingleserver; mtcs_Request.ServerListIndex = listindex; mtcs_Request.Index = arrayindex; }
void dlgMain::OnRefreshServer(wxCommandEvent &event) { // prevent reentrancy static wxRecursionGuardFlag s_rgf; wxRecursionGuard recursion_guard(s_rgf); if (recursion_guard.IsInside()) return; if (GetThread() && GetThread()->IsRunning()) return; if (!m_LstCtrlServers->GetItemCount() || !m_LstCtrlServers->GetSelectedItemCount()) return; m_LstCtrlPlayers->DeleteAllItems(); wxInt32 listindex = m_LstCtrlServers->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); wxListItem item; item.SetId(listindex); item.SetColumn(7); item.SetMask(wxLIST_MASK_TEXT); m_LstCtrlServers->GetItem(item); wxInt32 arrayindex = FindServer(item.GetText()); if (arrayindex == -1) return; TotalPlayers -= QServer[arrayindex].info.numplayers; mtcs_Request.Signal = mtcs_getsingleserver; mtcs_Request.ServerListIndex = listindex; mtcs_Request.Index = arrayindex; // Create monitor thread and run it if (this->wxThreadHelper::Create() != wxTHREAD_NO_ERROR) { wxMessageBox(_T("Could not create monitor thread!"), _T("Error"), wxOK | wxICON_ERROR); wxExit(); } GetThread()->Run(); }
// Get Master List button click void dlgMain::OnGetList(wxCommandEvent &event) { // prevent reentrancy static wxRecursionGuardFlag s_rgf; wxRecursionGuard recursion_guard(s_rgf); if (recursion_guard.IsInside()) return; m_LstCtrlServers->DeleteAllItems(); m_LstCtrlPlayers->DeleteAllItems(); QueriedServers = 0; TotalPlayers = 0; mtcs_Request.Signal = mtcs_getmaster; }
void dlgMain::OnRefreshAll(wxCommandEvent &event) { // prevent reentrancy static wxRecursionGuardFlag s_rgf; wxRecursionGuard recursion_guard(s_rgf); if (recursion_guard.IsInside()) return; if (!MServer->GetServerCount()) return; m_LstCtrlServers->DeleteAllItems(); m_LstCtrlPlayers->DeleteAllItems(); QueriedServers = 0; TotalPlayers = 0; mtcs_Request.Signal = mtcs_getservers; mtcs_Request.ServerListIndex = -1; mtcs_Request.Index = -1; }
int ACE_Service_Gestalt::process_file (const ACE_TCHAR file[]) { ACE_TRACE ("ACE_Service_Gestalt::process_file"); // To avoid recursive processing of the same file and the same repository // we maintain an implicit stack of dummy "services" named after the file // being processed. Anytime we have to open a new file, we then can check // to see if it is not already being processed by searching for a dummy // service with a matching name. if (this->repo_->find (file, 0, 0) >=0) { ACELIB_DEBUG ((LM_WARNING, ACE_TEXT ("ACE (%P|%t) Configuration file %s is currently") ACE_TEXT (" being processed. Ignoring recursive process_file().\n"), file)); return 0; } // Register a dummy service as a forward decl, using the file name as name. // The entry will be automaticaly removed once the thread exits this block. ACE_Service_Type_Dynamic_Guard recursion_guard (*this->repo_, file); /* * @TODO: Test with ACE_USES_CLASSIC_SVC_CONF turned off! */ #if (ACE_USES_CLASSIC_SVC_CONF == 1) int result = 0; FILE *fp = ACE_OS::fopen (file, ACE_TEXT ("r")); if (fp == 0) { // Invalid svc.conf file. We'll report it here and break out of // the method. if (ACE::debug ()) ACELIB_DEBUG ((LM_ERROR, ACE_TEXT ("ACE (%P|%t): %p\n"), file)); // Use stat to find out if the file exists. I didn't use access() // because stat is better supported on most non-unix platforms. ACE_stat exists; if (ACE_OS::stat (file, &exists) == 0) // If it exists, but we couldn't open it for reading then we // must not have permission to read it. errno = EPERM; else errno = ENOENT; result = -1; } else { ACE_Svc_Conf_Param f (this, fp); // Keep track of the number of errors. result = this->process_directives_i (&f); (void) ACE_OS::fclose (fp); } return result; #else ACE_DLL dll; auto_ptr<ACE_XML_Svc_Conf> xml_svc_conf (this->get_xml_svc_conf (dll)); if (xml_svc_conf.get () == 0) return -1; return xml_svc_conf->parse_file (file); #endif /* ACE_USES_CLASSIC_SVC_CONF == 1 */ }