Patch level : 10.0
Files correlati : lurch.exe Ricompilazione Demo : [ ] Commento : Migliorata gestione restart di Authorization git-svn-id: svn://10.65.10.50/branches/R_10_00@22315 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									0449fed52d
								
							
						
					
					
						commit
						8a39e3f976
					
				@ -36,7 +36,7 @@ protected:
 | 
			
		||||
  const TProcessHashMap& GetRunningServers() const { return m_hmProcMap; }
 | 
			
		||||
 | 
			
		||||
  bool PingProcess(const wxString& strApp);
 | 
			
		||||
  void StopProcess(const wxString& strApp);
 | 
			
		||||
  bool StopProcess(const wxString& strApp);
 | 
			
		||||
  wxString StartProcess(const wxString& strApp);
 | 
			
		||||
  
 | 
			
		||||
  TXmlItem& AddTableRow(TXmlItem& table, const wxChar* prompt, const wxString& value) const;
 | 
			
		||||
@ -168,13 +168,13 @@ void TLurchServer::OnTimer(wxTimerEvent& evt)
 | 
			
		||||
 | 
			
		||||
void TLurchServer::OnEndProcess(wxProcessEvent& evt)
 | 
			
		||||
{
 | 
			
		||||
  TProcessHashMap::const_iterator it;
 | 
			
		||||
  for (it = m_hmProcMap.begin(); it != m_hmProcMap.end(); ++it)
 | 
			
		||||
  for (TProcessHashMap::const_iterator it = m_hmProcMap.begin(); it != m_hmProcMap.end(); ++it)
 | 
			
		||||
  {
 | 
			
		||||
    const wxProcess* p = it->second;
 | 
			
		||||
    if (p->GetPid() == evt.GetPid())
 | 
			
		||||
    {
 | 
			
		||||
      ForgetProcess(it->first);
 | 
			
		||||
      const wxString name = it->first;
 | 
			
		||||
      ForgetProcess(name);
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -290,7 +290,7 @@ void TLurchServer::GenerateFile(wxString& strFilename)
 | 
			
		||||
 | 
			
		||||
      const bool bAutoRun = bLurch || GetAutoRunList().Index(arr[i]) != wxNOT_FOUND;
 | 
			
		||||
      TXmlItem& buttStart = AddMiniForm(tr, "start.cgi", arr[i], _("Start"));
 | 
			
		||||
      if (bRunning || bAutoRun)
 | 
			
		||||
      if (bRunning /* || bAutoRun */)
 | 
			
		||||
         buttStart.SetAttr(wxT("type"), wxT("hidden"));
 | 
			
		||||
 | 
			
		||||
      TXmlItem& buttStop = AddMiniForm(tr, "kill.cgi", arr[i], _("Stop"));
 | 
			
		||||
@ -422,12 +422,23 @@ void TLurchServer::ProcessFormStart(const THashTable& args, wxSocketBase& sock)
 | 
			
		||||
 | 
			
		||||
bool TLurchServer::ForgetProcess(const wxString& strApp)
 | 
			
		||||
{
 | 
			
		||||
  bool ok = m_hmProcMap.erase(strApp) != 0;
 | 
			
		||||
  if (ok)
 | 
			
		||||
    WriteLog(strApp + _(" terminated."));
 | 
			
		||||
  return m_hmProcMap.erase(strApp) != 0;
 | 
			
		||||
  return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TLurchServer::StopProcess(const wxString& strApp)
 | 
			
		||||
bool TLurchServer::StopProcess(const wxString& strApp)
 | 
			
		||||
{
 | 
			
		||||
  if (strApp != GetAppName())
 | 
			
		||||
  {
 | 
			
		||||
    const wxSingleInstanceChecker sic(strApp);
 | 
			
		||||
    if (!sic.IsAnotherRunning()) // E' belle che muorto!
 | 
			
		||||
      return ForgetProcess(strApp); 
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
    return false;
 | 
			
		||||
 
 | 
			
		||||
	const wxString strHost = GetConfigString("Host", "localhost", strApp);
 | 
			
		||||
	const int nPort = GetConfigInt("Port", 0, strApp);
 | 
			
		||||
	if (nPort > 0)
 | 
			
		||||
@ -455,12 +466,13 @@ void TLurchServer::StopProcess(const wxString& strApp)
 | 
			
		||||
          if (p != NULL)
 | 
			
		||||
          {
 | 
			
		||||
            p->Kill(p->GetPid());
 | 
			
		||||
            ForgetProcess(strApp);
 | 
			
		||||
            return ForgetProcess(strApp);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TLurchServer::ProcessFormStop(const THashTable& args, wxSocketBase& sock)
 | 
			
		||||
@ -672,11 +684,9 @@ bool TLurchServer::Initialization()
 | 
			
		||||
      StartProcess(arr[i]); 
 | 
			
		||||
    const int nFreq = GetConfigInt("PingFreq");
 | 
			
		||||
    if (nFreq > 0)
 | 
			
		||||
      {
 | 
			
		||||
      m_PingTimer.Start(nFreq * 1000); // sec to msec
 | 
			
		||||
  }  
 | 
			
		||||
  m_Semaphore.Post(); // GREEN!
 | 
			
		||||
    }
 | 
			
		||||
  }  
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user