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:
guy 2011-06-23 15:54:48 +00:00
parent 0449fed52d
commit 8a39e3f976

View File

@ -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;
}