diff options
author | Andreas Baumann <abaumann@yahoo.com> | 2009-03-27 13:42:30 +0100 |
---|---|---|
committer | Andreas Baumann <abaumann@yahoo.com> | 2009-03-27 13:42:30 +0100 |
commit | 9fb045b62a3e2c9dfc5bb616bb80677e8568c64e (patch) | |
tree | 376509a083a5ee97eb9a9141a703a73217e9c72f /tests/service | |
parent | 06baadef15c8326bc5d5a2d300cdd44a9aea29d4 (diff) | |
download | wolfbones-9fb045b62a3e2c9dfc5bb616bb80677e8568c64e.tar.gz wolfbones-9fb045b62a3e2c9dfc5bb616bb80677e8568c64e.tar.bz2 |
cleaned up testservice and service, more separation
Diffstat (limited to 'tests/service')
-rw-r--r-- | tests/service/testservice.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/tests/service/testservice.c b/tests/service/testservice.c index e57eeaa..360bb53 100644 --- a/tests/service/testservice.c +++ b/tests/service/testservice.c @@ -15,9 +15,48 @@ #define WOLF_MSG_TESTSERVICE_BASE ( WOLF_CATEGORY_TESTSERVICE ) * 1000 +#define WOLF_MSG_TESTSERVICE_STARTED_SERVICE WOLF_MSG_TESTSERVICE_BASE+1 +#define WOLF_MSG_TESTSERVICE_SUSPENDING_ON_EVENT_ERROR WOLF_MSG_TESTSERVICE_BASE+2 +#define WOLF_MSG_TESTSERVICE_GOT_TERMINATION_EVENT WOLF_MSG_TESTSERVICE_BASE+3 +#define WOLF_MSG_TESTSERVICE_STOPPED_SERVICE WOLF_MSG_TESTSERVICE_BASE+4 + #define SERVICE_NAME "testservice" #define SERVICE_NAME_DESCR "Wolf Test Service" +static void service_main( DWORD argc, LPTSTR *argv ) { + wolf_error_t error; + wolf_service_event_t event = WOLF_SERVICE_NO_EVENT; + + wolf_log( WOLF_LOG_NOTICE, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_STARTED_SERVICE, + _( "Started %s service" ), SERVICE_NAME ); + + while( event != WOLF_SERVICE_EVENT_TERMINATE ) { + event = wolf_service_events_suspend( 60, &error ); + + switch( event ) { + case WOLF_SERVICE_NO_EVENT: + if( error == WOLF_ERR_TIMEOUT ) { + /* do something periodic here */ + } else { + /* an error occurred */ + wolf_log( WOLF_LOG_CRIT, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_SUSPENDING_ON_EVENT_ERROR, + _( "Suspending on a service event resulted in an error %d!" ), + error ); + } + break; + + case WOLF_SERVICE_EVENT_TERMINATE: + wolf_log( WOLF_LOG_NOTICE, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_GOT_TERMINATION_EVENT, + _( "Got termination event, shutting down the daemon" ) ); + break; + + } + } + + wolf_log( WOLF_LOG_NOTICE, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_STOPPED_SERVICE, + _( "Stopped %s service" ), SERVICE_NAME ); +} + void __cdecl _tmain( int argc, TCHAR *argv[] ) { wolf_log_openlogtostderr( WOLF_LOG_DEBUG ); wolf_log_openlogtofile( "testservice.log", WOLF_LOG_DEBUG ); @@ -26,7 +65,8 @@ void __cdecl _tmain( int argc, TCHAR *argv[] ) { /* called as service, dispatch the main service thread */ if( argc < 2 ) { - (void)wolf_service_start( SERVICE_NAME, &wolf_service_main ); + (void)wolf_service_start( SERVICE_NAME, &service_main ); + /* here we get when the service is stopping */ return; } |