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)
|
||||
{
|
||||
WriteLog(strApp + _(" terminated."));
|
||||
return m_hmProcMap.erase(strApp) != 0;
|
||||
bool ok = m_hmProcMap.erase(strApp) != 0;
|
||||
if (ok)
|
||||
WriteLog(strApp + _(" terminated."));
|
||||
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)
|
||||
@ -670,13 +682,11 @@ bool TLurchServer::Initialization()
|
||||
{
|
||||
for (size_t i = 0; i < nAuto; i++)
|
||||
StartProcess(arr[i]);
|
||||
const int nFreq = GetConfigInt("PingFreq");
|
||||
if (nFreq > 0)
|
||||
{
|
||||
m_PingTimer.Start(nFreq * 1000); // sec to msec
|
||||
m_Semaphore.Post(); // GREEN!
|
||||
}
|
||||
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