ACE  6.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Macros
NT_Service.h File Reference
#include "ace/ACE.h"
#include "ace/OS_Log_Msg_Attributes.h"
#include "ace/Service_Object.h"
#include "ace/Task.h"
#include "ace/OS_NS_errno.h"
#include "ace/NT_Service.inl"

Classes

class  ACE_NT_Service
 Provide the base class which defines the interface for controlling an NT service. More...
 

Macros

#define ACE_NT_SERVICE_START_TIMEOUT   5000
 
#define ACE_NT_SERVICE_DEFINE(SVCNAME, SVCCLASS, SVCDESC)
 
#define ACE_NT_SERVICE_REFERENCE(SVCNAME)
 
#define ACE_NT_SERVICE_ENTRY(SVCDESC, SVCNAME)
 
#define ACE_NT_SERVICE_RUN(SVCNAME, SVCINSTANCE, RET)
 

Detailed Description

Id:
NT_Service.h 93117 2011-01-20 12:11:28Z mcorino
Author
Steve Huston shust.nosp@m.on@r.nosp@m.ivera.nosp@m.ce.c.nosp@m.om

Macro Definition Documentation

#define ACE_NT_SERVICE_DEFINE (   SVCNAME,
  SVCCLASS,
  SVCDESC 
)
Value:
ACE_NT_Service * _ace_nt_svc_obj_##SVCNAME = 0; \
VOID WINAPI ace_nt_svc_handler_##SVCNAME (DWORD fdwControl) { \
_ace_nt_svc_obj_##SVCNAME->handle_control(fdwControl); \
} \
VOID WINAPI ace_nt_svc_main_##SVCNAME (DWORD dwArgc, \
ACE_TCHAR **lpszArgv) { \
bool delete_svc_obj = false; \
if (_ace_nt_svc_obj_##SVCNAME == 0) { \
ACE_NEW (_ace_nt_svc_obj_##SVCNAME, SVCCLASS); \
if (_ace_nt_svc_obj_##SVCNAME == 0) \
return; \
delete_svc_obj = true; \
} \
else \
_ace_nt_svc_obj_##SVCNAME->inherit_log_msg_attributes (); \
_ace_nt_svc_obj_##SVCNAME->init(dwArgc, lpszArgv); \
_ace_nt_svc_obj_##SVCNAME->svc_handle( \
&ace_nt_svc_handler_##SVCNAME)); \
_ace_nt_svc_obj_##SVCNAME->open(); \
_ace_nt_svc_obj_##SVCNAME->wait(); \
_ace_nt_svc_obj_##SVCNAME->fini(); \
if (delete_svc_obj) { \
delete _ace_nt_svc_obj_##SVCNAME; \
_ace_nt_svc_obj_##SVCNAME = 0; \
} \
return; \
}
#define ACE_NT_SERVICE_ENTRY (   SVCDESC,
  SVCNAME 
)
Value:
{ const_cast<ACE_TCHAR*> (SVCDESC), \
&ace_nt_svc_main_##SVCNAME }
#define ACE_NT_SERVICE_REFERENCE (   SVCNAME)
Value:
extern ACE_NT_Service * _ace_nt_svc_obj_##SVCNAME; \
extern VOID WINAPI ace_nt_svc_main_##SVCNAME (DWORD dwArgc, \
ACE_TCHAR **lpszArgv);
#define ACE_NT_SERVICE_RUN (   SVCNAME,
  SVCINSTANCE,
  RET 
)
Value:
ACE_TEXT_SERVICE_TABLE_ENTRY _ace_nt_svc_table[2] = \
{ \
ACE_NT_SERVICE_ENTRY(ACE_TEXT (#SVCNAME), SVCNAME), \
{ 0, 0 } \
}; \
_ace_nt_svc_obj_##SVCNAME = SVCINSTANCE; \
_ace_nt_svc_obj_##SVCNAME->capture_log_msg_attributes (); \
int RET = ACE_TEXT_StartServiceCtrlDispatcher(_ace_nt_svc_table);
#define ACE_NT_SERVICE_START_TIMEOUT   5000