From 391222b8a5d4a69018b530859c8a0bcad05cf08a Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sun, 14 Dec 2014 17:48:43 +0100 Subject: .. --- src/cli.c | 8 +++++++- src/master.c | 7 +++++++ src/master.h | 2 ++ src/webserver.c | 21 ++++++++++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cli.c b/src/cli.c index 702c388..6cf3401 100644 --- a/src/cli.c +++ b/src/cli.c @@ -209,8 +209,14 @@ static void print_worker_output( const char *worker_name ) } if( strlen( data ) > 0 && data[len-1] == '\r' ) { data[len-1] = '\0'; + len--; } - print_answer( data ); + if( len > 0 ) { + print_message( "worker %s:", worker_name ); + print_answer( data ); + } + } else if( ret == ERRNOLG ) { + // ignore empty result, worker has no output currently } else { print_error( "ERROR: HTTP error %d", ret ); } diff --git a/src/master.c b/src/master.c index fc4768e..c2997da 100644 --- a/src/master.c +++ b/src/master.c @@ -81,6 +81,7 @@ static void update_workers( coordinator_t *coord, json_object *obj ) typedef struct { FILE *spool_file; + off_t read_pos; } execution_worker_data_t; static int register_coordinator( json_object *obj ) @@ -324,6 +325,7 @@ static int master_output_init( const char *spool_dir, const char *name ) execution_worker_data_t *wed = (execution_worker_data_t *)worker->execution_data; wed->spool_file = fopen( filename, "a+" ); + wed->read_pos = 0; return 0; } @@ -450,6 +452,11 @@ static int master_output_write_terminated( const char *spool_dir, json_object *o return 0; } +void master_output_tail( const char *name, char *s, size_t len ) +{ + //~ snprintf( s, len, "messages worker '%s'..\n", name ); +} + static void *master_func( void *thread_data ) { master_thread_data_t *tdata = (master_thread_data_t *)thread_data; diff --git a/src/master.h b/src/master.h index 616a763..77ca3f5 100644 --- a/src/master.h +++ b/src/master.h @@ -11,6 +11,8 @@ int master_free( ); int master_start_worker( const char *name ); int master_stop_worker( const char *name ); +void master_output_tail( const char *name, char *s, size_t len ); + #define MAX_COORDINATORS 128 #define MAX_COORDINATOR_AGE 10 diff --git a/src/webserver.c b/src/webserver.c index 3e3d2e7..f30a811 100644 --- a/src/webserver.c +++ b/src/webserver.c @@ -46,7 +46,26 @@ static int handle_request( void *cls, struct MHD_Connection *connection, } } } else if( strcmp( url, "/worker" ) == 0 ) { - snprintf( biruda_msg, sizeof( biruda_msg ), "messages ..\n" ); + + const char *op = MHD_lookup_connection_value( connection, MHD_GET_ARGUMENT_KIND, "op" ); + + printf( "Got GET operation '%s'\n", op ); + + if( op == NULL ) { + return MHD_NO; + } + + if( strcmp( op, "output" ) == 0 ) { + + const char *name = MHD_lookup_connection_value( connection, MHD_GET_ARGUMENT_KIND, "name" ); + + if( name != NULL ) { + master_output_tail( name, biruda_msg, sizeof( biruda_msg ) ); + } else { + return MHD_NO; + } + } + } else { snprintf( biruda_msg, sizeof( biruda_msg ), "Welcome to biruda! Please state your wish..\n" ); } -- cgit v1.2.3-54-g00ecf