using namespace icinga;
-const string IcingaApplication::PidFilename = "icinga.pid";
+const string IcingaApplication::DefaultPidPath = "icinga.pid";
+
+IcingaApplication::IcingaApplication(void)
+ : m_PidPath(DefaultPidPath)
+{ }
/**
* The entry point for the Icinga application.
time(&m_StartTime);
- UpdatePidFile(PidFilename);
-
if (args.size() < 2) {
stringstream msgbuf;
msgbuf << "Syntax: " << args[0] << " [-S] [-L logfile] [-d] [--] <config-file>";
icingaConfig->GetProperty("ca", &m_CAFile);
icingaConfig->GetProperty("node", &m_Node);
icingaConfig->GetProperty("service", &m_Service);
+ icingaConfig->GetProperty("pidpath", &m_PidPath);
+
+ UpdatePidFile(GetPidPath());
if (!GetCertificateFile().empty() && !GetCAFile().empty()) {
/* set up SSL context */
Logger::Write(LogInformation, "icinga", "Daemonizing.");
ClosePidFile();
Utility::Daemonize();
- UpdatePidFile(PidFilename);
+ UpdatePidFile(GetPidPath());
Logger::UnregisterLogger(consoleLogger);
}
return m_Service;
}
+string IcingaApplication::GetPidPath(void) const
+{
+ return m_PidPath;
+}
+
time_t IcingaApplication::GetStartTime(void) const
{
return m_StartTime;
typedef shared_ptr<IcingaApplication> Ptr;
typedef weak_ptr<IcingaApplication> WeakPtr;
+ IcingaApplication(void);
+
int Main(const vector<string>& args);
static IcingaApplication::Ptr GetInstance(void);
string GetCAFile(void) const;
string GetNode(void) const;
string GetService(void) const;
+ string GetPidPath(void) const;
time_t GetStartTime(void) const;
- static const string PidFilename;
+ static const string DefaultPidPath;
private:
string m_CertificateFile;
string m_CAFile;
string m_Node;
string m_Service;
+ string m_PidPath;
time_t m_StartTime;