PTLib  Version 2.14.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PServiceProcess Class Referenceabstract

A process type that runs as a "background" service. More...

#include <svcproc.h>

Inheritance diagram for PServiceProcess:
Collaboration diagram for PServiceProcess:

Public Member Functions

virtual void Main ()
 User override function for the main execution routine of the thread. More...
 
virtual int InternalMain (void *arg=NULL)
 Main function for process, called from real main after initialisation. More...
 
 ~PServiceProcess ()
 
virtual void Terminate ()
 Terminate the process. More...
 
Construction
 PServiceProcess (const char *manuf, const char *name, unsigned majorVersion, unsigned minorVersion, CodeStatus status, unsigned buildNumber)
 Create a new service process. More...
 
Callback functions
virtual PBoolean OnStart ()=0
 Called when the service is started. More...
 
virtual void OnStop ()
 Called by the system when the service is stopped. More...
 
virtual PBoolean OnPause ()
 Called by the system when the service is to be paused. More...
 
virtual void OnContinue ()
 Resume after the service was paused. More...
 
virtual void OnControl ()=0
 The Control menu option was used in the SysTray menu. More...
 
- Public Member Functions inherited from PProcess
void PreInitialise (int argc, char **argv)
 Internal initialisation function called directly from InternalMain(). More...
 
void PreShutdown ()
 Internal shutdown function called directly from the ~PProcess InternalMain(). More...
 
PThreadGetThread (PThreadIdentifier threadId) const
 
bool SignalTimerChange ()
 
 ~PProcess ()
 
void PXCheckSignals ()
 
Comparison Compare (const PObject &obj) const
 Compare two process instances. More...
 
 PProcess (const char *manuf="", const char *name="", unsigned majorVersion=1, unsigned minorVersion=0, CodeStatus status=ReleaseCode, unsigned buildNumber=1, bool library=false, bool suppressStartup=false)
 Create a new process instance. More...
 
void Startup ()
 Start up all items registered with PProcessStartupFactory. More...
 
virtual void OnThreadStart (PThread &thread)
 Callback for when a thread is started by the PTLib system. More...
 
virtual void OnThreadEnded (PThread &thread)
 Callback for when a thread is ended if wqas started in the PTLib system. More...
 
virtual bool OnInterrupt (bool terminating)
 Callback for when a ^C (SIGINT), hangup (SIGHUP) or termination request (SIGTERM) is received by process. More...
 
void SetTerminationValue (int value)
 Set the termination value for the process. More...
 
int GetTerminationValue () const
 Get the termination value for the process. More...
 
PArgListGetArguments ()
 Get the programme arguments. More...
 
virtual const PStringGetManufacturer () const
 Get the name of the manufacturer of the software. More...
 
virtual const PStringGetName () const
 Get the name of the process. More...
 
virtual PString GetVersion (PBoolean full=true) const
 Get the version of the software. More...
 
const PFilePathGetFile () const
 Get the processes executable image file path. More...
 
PProcessIdentifier GetProcessID () const
 Get the platform dependent process identifier for the process. More...
 
PTime GetStartTime () const
 Return the time at which the program was started. More...
 
PString GetUserName () const
 Get the effective user name of the owner of the process, eg "root" etc. More...
 
PBoolean SetUserName (const PString &username, PBoolean permanent=false)
 Set the effective owner of the process. More...
 
PDirectory GetHomeDirectory () const
 Get the "home" directory for the logged in user. More...
 
PString GetGroupName () const
 Get the effective group name of the owner of the process, eg "root" etc. More...
 
PBoolean SetGroupName (const PString &groupname, PBoolean permanent=false)
 Set the effective group of the process. More...
 
int GetMaxHandles () const
 Get the maximum file handle value for the process. More...
 
PBoolean SetMaxHandles (int newLimit)
 Set the maximum number of file handles for the process. More...
 
virtual PString GetConfigurationFile ()
 Get the default file to use in PConfig instances. More...
 
void SetConfigurationPath (const PString &path)
 Set the default file or set of directories to search for use in PConfig. More...
 
- Public Member Functions inherited from PThread
bool IsAutoDelete () const
 
int PXBlockOnChildTerminate (int pid, const PTimeInterval &timeout)
 
int PXBlockOnIO (int handle, int type, const PTimeInterval &timeout)
 
void PXAbortBlock () const
 
void PrintOn (ostream &strm) const
 Standard stream print function. More...
 
 PThread (PINDEX stack, AutoDeleteFlag deletion=AutoDeleteThread, Priority priorityLevel=NormalPriority, const PString &threadName=PString::Empty())
 Create a new thread instance. More...
 
 ~PThread ()
 Destroy the thread, this simply calls the Terminate() function with all its restrictions and penalties. More...
 
virtual void Restart ()
 Restart a terminated thread using the same stack priority etc that was current when the thread terminated. More...
 
virtual PBoolean IsTerminated () const
 Determine if the thread has been terminated or ran to completion. More...
 
void WaitForTermination () const
 Block and wait for the thread to terminate. More...
 
PBoolean WaitForTermination (const PTimeInterval &maxWait) const
 Block and wait for the thread to terminate. More...
 
virtual void Suspend (PBoolean susp=true)
 Suspend or resume the thread. More...
 
virtual void Resume ()
 Resume thread execution, this is identical to Suspend(false). More...
 
virtual PBoolean IsSuspended () const
 Determine if the thread is currently suspended. More...
 
virtual void SetPriority (Priority priorityLevel)
 Set the priority of the thread relative to other threads in the current process. More...
 
virtual Priority GetPriority () const
 Get the current priority of the thread in the current process. More...
 
virtual void SetAutoDelete (AutoDeleteFlag deletion=AutoDeleteThread)
 Set the flag indicating thread object is to be automatically deleted when the thread ends. More...
 
void SetNoAutoDelete ()
 Reet the flag indicating thread object is to be automatically deleted when the thread ends. More...
 
virtual PString GetThreadName () const
 Get the name of the thread. More...
 
virtual void SetThreadName (const PString &name)
 Change the name of the thread. More...
 
virtual PThreadIdentifier GetThreadId () const
 Get operating system specific thread identifier for this thread. More...
 
bool GetTimes (Times &times)
 Get the thread execution times. More...
 
- Public Member Functions inherited from PObject
unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
void SetTraceContextIdentifier (unsigned id)
 
void GetTraceContextIdentifier (PObject &obj)
 
void GetTraceContextIdentifier (PObject *obj)
 
void SetTraceContextIdentifier (const PObject &obj)
 
void SetTraceContextIdentifier (const PObject *obj)
 
virtual ~PObject ()
 
virtual PObjectClone () const
 Create a copy of the class on the heap. More...
 
template<class CLS >
CLS * CloneAs () const
 As for Clone() but converts to specified type. More...
 
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class. More...
 
virtual const char * GetClass (unsigned ancestor=0) const
 Get the current dynamic type of the object instance. More...
 
PBoolean IsClass (const char *cls) const
 
virtual PBoolean InternalIsDescendant (const char *clsName) const
 Determine if the dynamic type of the current instance is a descendent of the specified class. More...
 
__inline const PObjectPTraceObjectInstance () const
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 
virtual void ReadFrom (istream &strm)
 Input the contents of the object from the stream. More...
 

Protected Member Functions

int InitialiseService ()
 
void _PXShowSystemWarning (PINDEX num, const PString &str)
 
void PXOnSignal (int)
 
void PXOnAsyncSignal (int)
 
- Protected Member Functions inherited from PProcess
void Construct ()
 
void InternalThreadStarted (PThread *thread)
 
void InternalThreadEnded (PThread *thread)
 
void InternalSetAutoDeleteThread (PThread *thread)
 
void InternalCleanAutoDeleteThreads ()
 
void HouseKeeping ()
 
 PDICTIONARY (PXFdDict, POrdinalKey, PThread)
 
void CommonConstruct ()
 
void CommonDestruct ()
 

Protected Attributes

PSyncPoint m_exitMain
 
bool m_debugMode
 Flag to indicate service is run in simulation mode. More...
 
PString pidFileToRemove
 
PBoolean isTerminating
 
- Protected Attributes inherited from PProcess
bool m_library
 
int terminationValue
 
PString manufacturer
 
PString productName
 
unsigned majorVersion
 
unsigned minorVersion
 
CodeStatus status
 
unsigned buildNumber
 
PFilePath executableFile
 
PStringArray configurationPaths
 
PArgList arguments
 
int maxHandles
 
PTime programStartTime
 
bool m_shuttingDown
 
PMutex m_threadMutex
 
ThreadMap m_activeThreads
 
ThreadList m_autoDeleteThreads
 
PAtomicBoolean m_keepingHouse
 
PThreadm_houseKeeper
 
PSyncPoint m_signalHouseKeeper
 
PTimer::Listm_timerList
 
PProcessIdentifier m_processID
 
uint32_t m_pxSignals
 
- Protected Attributes inherited from PThread
enum PThread::Type m_type
 
PINDEX m_originalStackSize
 
PString m_threadName
 
PMutex m_threadNameMutex
 
PThreadIdentifier m_threadId
 
LocalStorageList m_localStorage
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Miscellaneous functions

void SetLogLevel (PSystemLog::Level level)
 Set the level at which errors are logged. More...
 
PSystemLog::Level GetLogLevel () const
 Get the current level for logging. More...
 
static PServiceProcessCurrent ()
 Get the current service process object. More...
 

Additional Inherited Members

- Public Types inherited from PProcess
enum  CodeStatus { AlphaCode, BetaCode, ReleaseCode, NumCodeStatuses }
 Release status for the program. More...
 
- Public Types inherited from PThread
enum  Priority {
  LowestPriority, LowPriority, NormalPriority, HighPriority,
  HighestPriority, NumPriorities
}
 Codes for thread priorities. More...
 
enum  AutoDeleteFlag { AutoDeleteThread, NoAutoDeleteThread }
 Codes for thread autodelete flag. More...
 
- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 
- Static Public Member Functions inherited from PProcess
static void PostShutdown ()
 
static void PXShowSystemWarning (PINDEX code)
 
static void PXShowSystemWarning (PINDEX code, const PString &str)
 
static PString GetOSClass ()
 Get the class of the operating system the process is running on, eg "unix". More...
 
static PString GetOSName ()
 Get the name of the operating system the process is running on, eg "Linux". More...
 
static PString GetOSHardware ()
 Get the hardware the process is running on, eg "sparc". More...
 
static PString GetOSVersion ()
 Get the version of the operating system the process is running on, eg "2.0.33". More...
 
static bool IsOSVersion (unsigned major, unsigned minor=0, unsigned build=0)
 See if operating system is later than the version specified. More...
 
static PDirectory GetOSConfigDir ()
 Get the configuration directory of the operating system the process is running on, eg "/etc" for Unix, "c:\windows" for Win95 or "c:\winnt\system32\drivers\etc" for NT. More...
 
static PString GetLibVersion ()
 Get the version of the PTLib library the process is running on, eg "2.5beta3". More...
 
static PProcessCurrent ()
 Get the current processes object instance. More...
 
static PBoolean IsInitialised ()
 Determine if the current processes object instance has been initialised. More...
 
static PProcessIdentifier GetCurrentProcessID ()
 Get the platform dependent process identifier for the currentprocess. More...
 
- Protected Types inherited from PProcess
typedef std::map
< PThreadIdentifier, PThread * > 
ThreadMap
 
typedef PList< PThreadThreadList
 
- Friends inherited from PObject

Detailed Description

A process type that runs as a "background" service.

This may be a service under the Windows NT operating system, or a "daemon" under Unix, or a hidden application under Windows.

Constructor & Destructor Documentation

PServiceProcess::PServiceProcess ( const char *  manuf,
const char *  name,
unsigned  majorVersion,
unsigned  minorVersion,
CodeStatus  status,
unsigned  buildNumber 
)

Create a new service process.

Parameters
manufName of manufacturer
nameName of product
majorVersionMajor version number of the product
minorVersionMinor version number of the product
statusDevelopment status of the product
buildNumberBuild number of the product
PServiceProcess::~PServiceProcess ( )

Member Function Documentation

void PServiceProcess::_PXShowSystemWarning ( PINDEX  num,
const PString str 
)
protectedvirtual

Reimplemented from PProcess.

static PServiceProcess& PServiceProcess::Current ( )
static

Get the current service process object.

Returns
Pointer to service process.
PSystemLog::Level PServiceProcess::GetLogLevel ( ) const
inline

Get the current level for logging.

Returns
Log level.

References PSystemLog::GetTarget(), and PSystemLogTarget::GetThresholdLevel().

int PServiceProcess::InitialiseService ( )
protected
virtual int PServiceProcess::InternalMain ( void *  arg = NULL)
virtual

Main function for process, called from real main after initialisation.

Reimplemented from PProcess.

virtual void PServiceProcess::Main ( )
virtual

User override function for the main execution routine of the thread.

A descendent class could provide the code that will be executed in the thread within this function.

Default behaviour is to wait until m_exitMain is signalled.

Implements PThread.

virtual void PServiceProcess::OnContinue ( )
virtual

Resume after the service was paused.

Reimplemented in PHTTPServiceProcess.

virtual void PServiceProcess::OnControl ( )
pure virtual

The Control menu option was used in the SysTray menu.

virtual PBoolean PServiceProcess::OnPause ( )
virtual

Called by the system when the service is to be paused.

This will suspend any actions that the service may be executing. Usually this is less expensive in resource allocation etc than stopping and starting the service.

Returns
true if the service was successfully paused.

Reimplemented in PHTTPServiceProcess.

virtual PBoolean PServiceProcess::OnStart ( )
pure virtual

Called when the service is started.

This typically initialises the service and returns true if the service is ready to run. The Main() function is then executed.

Returns
true if service may start, false if an initialisation failure occurred.

Implemented in PHTTPServiceProcess.

virtual void PServiceProcess::OnStop ( )
virtual

Called by the system when the service is stopped.

One return from this function there is no guarentee that any more user code will be executed. Any cleaning up or closing of resource must be done in here.

Default behaviour signals the m_exitMain to exit Main().

Reimplemented in PHTTPServiceProcess.

void PServiceProcess::PXOnAsyncSignal ( int  )
protectedvirtual

Reimplemented from PProcess.

void PServiceProcess::PXOnSignal ( int  )
protectedvirtual

Reimplemented from PProcess.

void PServiceProcess::SetLogLevel ( PSystemLog::Level  level)

Set the level at which errors are logged.

Only messages higher than or equal to the specified level will be logged.

The default is PSystemLog::Error allowing fatal errors and ordinary\ errors to be logged and warning and information to be ignored.

If in debug mode then the default is PSystemLog::Info allowing all messages to be displayed.

Parameters
levelNew log level
virtual void PServiceProcess::Terminate ( )
virtual

Terminate the process.

Usually only used in abnormal abort situation.

Reimplemented from PProcess.

Member Data Documentation

PBoolean PServiceProcess::isTerminating
protected
bool PServiceProcess::m_debugMode
protected

Flag to indicate service is run in simulation mode.

PSyncPoint PServiceProcess::m_exitMain
protected
PString PServiceProcess::pidFileToRemove
protected

The documentation for this class was generated from the following files: