34 #ifndef PTLIB_PROCESS_H 35 #define PTLIB_PROCESS_H 56 #define PCREATE_PROCESS(cls) \ 58 instance.InternalMain(); 59 #elif defined(P_RTEMS) 60 #define PCREATE_PROCESS(cls) \ 62 void* POSIX_Init( void* argument) \ 64 static cls instance; \ 65 exit( instance.InternalMain() ); \ 68 #elif defined(_WIN32_WCE) 69 #define PCREATE_PROCESS(cls) \ 70 PDEFINE_WINMAIN(hInstance, , lpCmdLine, ) \ 72 cls *pInstance = new cls(); \ 73 pInstance->GetArguments().SetArgs(lpCmdLine); \ 74 int terminationValue = pInstance->InternalMain(hInstance); \ 76 return terminationValue; \ 79 #define PCREATE_PROCESS(cls) \ 80 int main(int argc, char ** argv, char ** envp) \ 82 cls *pInstance = new cls(); \ 83 pInstance->PreInitialise(argc, argv, envp); \ 84 int terminationValue = pInstance->InternalMain(); \ 86 return terminationValue; \ 96 #define PDECLARE_PROCESS(cls,ancestor,manuf,name,major,minor,status,build) \ 97 class cls : public ancestor { \ 98 PCLASSINFO(cls, ancestor); \ 100 cls() : ancestor(manuf, name, major, minor, status, build) { } \ 102 virtual void Main(); \ 146 ,
m_id(t->GetTimerId())
166 typedef std::queue<RequestType> RequestQueueType;
167 RequestQueueType m_requestQueue;
176 struct ActiveTimerInfo {
182 typedef std::map<PTimer::IDType, ActiveTimerInfo> ActiveTimerInfoMap;
183 ActiveTimerInfoMap m_activeTimers;
186 struct TimerExpiryInfo {
188 : m_timerId(id), m_expireTime(expireTime),
m_serialNumber(serialNumber) { }
194 struct TimerExpiryInfo_compare
195 :
public binary_function<TimerExpiryInfo, TimerExpiryInfo, bool>
197 bool operator()(
const TimerExpiryInfo & _Left,
const TimerExpiryInfo & _Right)
const 198 {
return (_Left.m_expireTime < _Right.m_expireTime); }
201 typedef std::multiset<TimerExpiryInfo, TimerExpiryInfo_compare> TimerExpiryInfoList;
202 TimerExpiryInfoList m_expiryList;
248 const char * manuf =
"",
249 const char * name =
"",
250 WORD majorVersion = 1,
251 WORD minorVersion = 0,
253 WORD buildNumber = 1,
275 virtual void Terminate();
282 virtual PString GetThreadName()
const;
289 virtual void SetThreadName(
307 virtual void OnThreadStart(
314 virtual void OnThreadEnded(
330 virtual bool OnInterrupt(
348 void SetTerminationValue(
361 int GetTerminationValue()
const;
380 virtual const PString & GetManufacturer()
const;
391 virtual const PString & GetName()
const;
434 static PProcessIdentifier GetCurrentProcessID();
438 PTime GetStartTime()
const;
522 int GetMaxHandles()
const;
540 virtual PString GetConfigurationFile();
556 void SetConfigurationPath(
584 static PString GetOSHardware();
599 static bool IsOSVersion(
620 static PString GetLibVersion();
643 static void PreShutdown();
644 static void PostShutdown();
647 virtual int InternalMain(
void * arg = NULL);
680 static bool RegisterTypes(
const PString & types,
bool force =
true);
682 void SetIcon(
const PString & icon);
688 bool GetFromSystem();
689 bool CheckIfRegistered();
726 typedef std::map<PThreadIdentifier, PThread *>
ThreadMap;
739 #include "msos/ptlib/pprocess.h" 741 #include "unix/ptlib/pprocess.h" 758 const char * manuf =
"",
759 const char * name =
"",
760 WORD majorVersionNum = 1,
761 WORD minorVersionNum = 0,
764 ) :
PProcess(manuf, name, majorVersionNum, minorVersionNum, statusCode, buildNum, true) { }
792 #define P_DEFAULT_TRACE_OPTIONS ( PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine ) 794 template <
unsigned level,
unsigned options = P_DEFAULT_TRACE_OPTIONS >
805 #endif // PTLIB_PROCESS_H bool m_shuttingDown
Definition: pprocess.h:724
std::map< PThreadIdentifier, PThread * > ThreadMap
Definition: pprocess.h:726
virtual void Main()
< Dummy Main() as libraries do not have one.
Definition: pprocess.h:768
WORD buildNumber
Definition: pprocess.h:715
PTime programStartTime
Definition: pprocess.h:722
void QueueRequest(RequestType::Action action, PTimer *timer, bool isSync=true)
PInt64 m_absoluteTime
Definition: pprocess.h:154
This class defines an arbitrary time interval to millisecond accuracy.
Definition: timeint.h:55
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:1049
PString productName
Definition: pprocess.h:710
This class defines an absolute time and date.
Definition: ptime.h:53
bool m_library
Definition: pprocess.h:706
PFactory< PProcessStartup > PProcessStartupFactory
Definition: pprocess.h:787
This is a dictionary collection class of PString objects, keyed by another string.
Definition: pstring.h:2784
This class describes a full description for a file on the particular platform.
Definition: filepath.h:65
Comparison
Result of the comparison operation performed by the Compare() function.
Definition: object.h:1184
HostSystemURLHandlerInfo()
Definition: pprocess.h:673
PTimer * m_timer
Definition: pprocess.h:152
CodeStatus status
Definition: pprocess.h:714
PTimer::IDType GetNewTimerId() const
Definition: pprocess.h:134
Code is still very much under construction.
Definition: pprocess.h:237
RequestType(Action act, PTimer *t)
Definition: pprocess.h:143
static void Initialise(unsigned level, const char *filename=NULL, unsigned options=Timestamp|Thread|Blocks)
Set the most common trace options.
This is an array collection class of PString objects.
Definition: pstring.h:2024
WORD minorVersion
Definition: pprocess.h:713
PTimerList timers
Definition: pprocess.h:730
PString manufacturer
Definition: pprocess.h:709
Code is largely complete and is under test.
Definition: pprocess.h:239
This class represents an operating system process.
Definition: pprocess.h:227
A class representing a system timer.
Definition: timer.h:181
BOOL PBoolean
Definition: object.h:102
Class to represent a directory in the operating system file system.
Definition: pdirect.h:182
WORD majorVersion
Definition: pprocess.h:712
Definition: pprocess.h:106
PProcessIdentifier m_processID
Definition: pprocess.h:732
This class implements an integer that can be atomically incremented and decremented in a thread-safe ...
Definition: critsec.h:171
Action
Definition: pprocess.h:138
This class can be used to register various URL types with the host operating system so that URLs will...
Definition: pprocess.h:670
PLibraryProcess(const char *manuf="", const char *name="", WORD majorVersionNum=1, WORD minorVersionNum=0, CodeStatus statusCode=ReleaseCode, WORD buildNum=1)
Create a new process instance.
Definition: pprocess.h:757
Class for a process that is a dynamically loaded library.
Definition: pprocess.h:748
enum PTimerList::RequestType::Action m_action
The character string class.
Definition: pstring.h:108
This class allows the parsing of a set of program arguments.
Definition: args.h:45
virtual Comparison Compare(const PObject &obj) const
Compare the two objects and return their relative rank.
PTimer::IDType m_id
Definition: pprocess.h:153
This class defines a thread of execution in the system.
Definition: thread.h:66
PStringArray configurationPaths
Definition: pprocess.h:718
virtual void OnShutdown()
Definition: pprocess.h:784
PAtomicInteger::IntegerType m_serialNumber
Definition: pprocess.h:155
Template class for generic factories of an abstract class.
Definition: pfactory.h:144
PMutex m_activeThreadMutex
Definition: pprocess.h:728
Definition: pprocess.h:136
Definition: pprocess.h:779
PFilePath executableFile
Definition: pprocess.h:717
Definition: pprocess.h:139
Code has all known bugs removed and is shipping.
Definition: pprocess.h:241
virtual void OnStartup()
Definition: pprocess.h:783
int maxHandles
Definition: pprocess.h:720
CodeStatus
Release status for the program.
Definition: pprocess.h:235
int terminationValue
Definition: pprocess.h:707
PArgList arguments
Definition: pprocess.h:719
PAtomicBase::IntegerType IntegerType
Definition: critsec.h:174
ThreadMap m_activeThreads
Definition: pprocess.h:727
HostSystemURLHandlerInfo(const PString &t)
Definition: pprocess.h:676
Ultimate parent class for all objects in the class library.
Definition: object.h:1118
Definition: pprocess.h:140
PProcessIdentifier GetProcessID() const
Get the platform dependent process identifier for the process.
Definition: pprocess.h:425
PString type
Definition: pprocess.h:693
This class defines a thread synchronisation object.
Definition: syncpoint.h:67
PSyncPoint * m_sync
Definition: pprocess.h:156
unsigned IDType
Definition: timer.h:186