summaryrefslogtreecommitdiff
path: root/tests/service
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2009-03-27 13:42:30 +0100
committerAndreas Baumann <abaumann@yahoo.com>2009-03-27 13:42:30 +0100
commit9fb045b62a3e2c9dfc5bb616bb80677e8568c64e (patch)
tree376509a083a5ee97eb9a9141a703a73217e9c72f /tests/service
parent06baadef15c8326bc5d5a2d300cdd44a9aea29d4 (diff)
downloadwolfbones-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.c42
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;
}