incron  0.5.10
appinst.h
Go to the documentation of this file.
00001 
00003 
00021 #ifndef APPINST_H_
00022 #define APPINST_H_
00023 
00024 
00025 #include <string>
00026 
00027 
00028 #define APPLOCK_BASEDIR "/var/run"
00029 
00030 
00032 
00035 class AppInstException
00036 {
00037 public:
00039 
00042   AppInstException(int iErr) : m_iErr(iErr) {}
00043   
00045 
00048   inline int GetErrorNumber() const
00049   {
00050     return m_iErr;
00051   }
00052   
00053 private:
00054   int m_iErr; 
00055     
00056 };
00057 
00059 
00064 class AppInstance
00065 {
00066 public:
00068 
00075   AppInstance(const std::string& rName, const std::string& rBase = APPLOCK_BASEDIR);
00076   
00078   ~AppInstance();
00079   
00081 
00089   bool Lock();
00090   
00092 
00097   void Unlock();
00098   
00100 
00107   bool Exists() const;
00108   
00110 
00116   bool SendSignal(int iSigNo) const;
00117   
00119 
00124   inline bool Terminate() const
00125   {
00126     return SendSignal(SIGTERM);
00127   }
00128   
00129 protected:
00130   bool DoLock();
00131   
00132 private:
00133   std::string m_path; 
00134   bool m_fLocked;     
00135 };
00136 
00137 #endif /*APPINST_H_*/