branch, ticket-227, updated. 36f49c03afec3b4b68d58b75fd898a95d886eff2
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "". The branch, ticket-227 has been updated via 36f49c03afec3b4b68d58b75fd898a95d886eff2 (commit) via fa71b47155dcf8ec1d8dd321b59803ffb63e6ad0 (commit) from b9926afb604f51ec2ee694182bd982ab8f970a13 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 36f49c03afec3b4b68d58b75fd898a95d886eff2 Author: Phil Carns <[email protected]> Date: Thu Jun 27 15:57:03 2013 -0400 fix init order and switch back to signal shutdown commit fa71b47155dcf8ec1d8dd321b59803ffb63e6ad0 Author: Phil Carns <[email protected]> Date: Thu Jun 27 15:50:29 2013 -0400 reorg a little bit for client/server operation ----------------------------------------------------------------------- Summary of changes: code/src/remote/mercury-engine.ae | 78 ++++++++++++++++++++---------------- code/src/remote/mercury-engine.hae | 7 ++- code/src/remote/mercury-svr.ae | 23 +++-------- 3 files changed, 55 insertions(+), 53 deletions(-) Diff of changes: diff --git a/code/src/remote/mercury-engine.ae b/code/src/remote/mercury-engine.ae index b6ba129..b3387a9 100644 --- a/code/src/remote/mercury-engine.ae +++ b/code/src/remote/mercury-engine.ae @@ -19,40 +19,47 @@ static triton_mutex_t module_lock = TRITON_MUTEX_INITIALIZER; static int module_refcount = 0; -static pthread_t tid; -static triton_mutex_t thread_mutex = TRITON_MUTEX_INITIALIZER; +static pthread_t svr_tid; +static triton_mutex_t svr_mutex = TRITON_MUTEX_INITIALIZER; static int shutting_down = 0; +static int g_flags = 0; -static void* thread_fn(void* foo); +static void* svr_thread_fn(void* foo); -triton_ret_t triton_mercury_svr_init(void) +triton_ret_t triton_mercury_engine_init(int flags) { na_class_t *network_class = NULL; int hg_ret; int ret; + g_flags = flags; + + assert((g_flags & TRITON_MERCURY_SVR) || (g_flags & TRITON_MERCURY_CLIENT)); + triton_mutex_lock(&module_lock); if (!module_refcount) { - - /* Initialize the interface */ - network_class = NA_BMI_Init("bmi_tcp", "tcp://localhost:3344", BMI_INIT_SERVER); - - hg_ret = HG_Handler_init(network_class); - if (hg_ret != HG_SUCCESS) + if(g_flags & TRITON_MERCURY_SVR) { - fprintf(stderr, "Error: HG_Handler_init() failure.\n"); - triton_mutex_unlock(&module_lock); - return(TRITON_ERR_UNKNOWN); - } - - ret = pthread_create(&tid, NULL, thread_fn, NULL); - if(ret != 0) - { - HG_Handler_finalize(); - triton_mutex_unlock(&module_lock); - return(TRITON_ERR_UNKNOWN); + /* Initialize the interface */ + network_class = NA_BMI_Init("bmi_tcp", "tcp://localhost:3344", BMI_INIT_SERVER); + + hg_ret = HG_Handler_init(network_class); + if (hg_ret != HG_SUCCESS) + { + fprintf(stderr, "Error: HG_Handler_init() failure.\n"); + triton_mutex_unlock(&module_lock); + return(TRITON_ERR_UNKNOWN); + } + + ret = pthread_create(&svr_tid, NULL, svr_thread_fn, NULL); + if(ret != 0) + { + HG_Handler_finalize(); + triton_mutex_unlock(&module_lock); + return(TRITON_ERR_UNKNOWN); + } } } module_refcount++; @@ -61,7 +68,7 @@ triton_ret_t triton_mercury_svr_init(void) return(TRITON_SUCCESS); } -void triton_mercury_svr_finalize(void) +void triton_mercury_engine_finalize(void) { int hg_ret; @@ -70,29 +77,32 @@ void triton_mercury_svr_finalize(void) if (!module_refcount) { - triton_mutex_lock(&thread_mutex); + triton_mutex_lock(&svr_mutex); shutting_down = 1; - triton_mutex_unlock(&thread_mutex); + triton_mutex_unlock(&svr_mutex); - pthread_join(tid, NULL); + if(g_flags & TRITON_MERCURY_SVR) + { + pthread_join(svr_tid, NULL); - hg_ret = HG_Handler_finalize(); - if (hg_ret != HG_SUCCESS) { - fprintf(stderr, "Could not finalize function shipper handler\n"); - return; + hg_ret = HG_Handler_finalize(); + if (hg_ret != HG_SUCCESS) { + fprintf(stderr, "Could not finalize function shipper handler\n"); + return; + } } } triton_mutex_unlock(&module_lock); } -static void* thread_fn(void* foo) +static void* svr_thread_fn(void* foo) { int hg_ret = HG_SUCCESS; - triton_mutex_lock(&thread_mutex); + triton_mutex_lock(&svr_mutex); while(!shutting_down && hg_ret == HG_SUCCESS) { - triton_mutex_unlock(&thread_mutex); + triton_mutex_unlock(&svr_mutex); /* TODO: confirm what the timeout value should be here */ hg_ret = HG_Handler_process(1, HG_STATUS_IGNORE); @@ -105,11 +115,11 @@ static void* thread_fn(void* foo) /* fprintf(stderr, "Error: HG_Handler_process() failure.\n"); */ } - triton_mutex_lock(&thread_mutex); + triton_mutex_lock(&svr_mutex); } shutting_down = 0; - triton_mutex_unlock(&thread_mutex); + triton_mutex_unlock(&svr_mutex); return(NULL); } diff --git a/code/src/remote/mercury-engine.hae b/code/src/remote/mercury-engine.hae index f5c6f5a..0cb13c5 100644 --- a/code/src/remote/mercury-engine.hae +++ b/code/src/remote/mercury-engine.hae @@ -4,8 +4,11 @@ #include <aesop/aesop.h> #include "src/common/triton-error.h" -triton_ret_t triton_mercury_svr_init(void); +#define TRITON_MERCURY_SVR 1 +#define TRITON_MERCURY_CLIENT 1 -void triton_mercury_svr_finalize(void); +triton_ret_t triton_mercury_engine_init(int flags); + +void triton_mercury_engine_finalize(void); #endif diff --git a/code/src/remote/mercury-svr.ae b/code/src/remote/mercury-svr.ae index 2ca0bad..b173146 100644 --- a/code/src/remote/mercury-svr.ae +++ b/code/src/remote/mercury-svr.ae @@ -18,18 +18,15 @@ __blocking int aesop_main(int argc, char **argv) triton_ret_t ret; int aeret; - aeret = aesop_timer_init(); - assert(aeret == 0); - - /* TODO: why doesn't this signal stuff work? */ -#if 0 ret = triton_signal_init(); triton_error_assert(ret); triton_signal_track(SIGINT); -#endif - ret = triton_mercury_svr_init(); + aeret = aesop_timer_init(); + assert(aeret == 0); + + ret = triton_mercury_engine_init(TRITON_MERCURY_SVR); triton_error_assert(ret); MERCURY_HANDLER_REGISTER("triton_mercury_rpc_timer", @@ -37,24 +34,16 @@ __blocking int aesop_main(int argc, char **argv) triton_mercury_rpc_timer_in_t, triton_mercury_rpc_timer_out_t); -#if 0 printf("Server up and running until ctrl-c\n"); fflush(NULL); triton_signal_wait(SIGINT); -#else - printf("Server up and running for %d seconds....\n", RUNTIME); - fflush(NULL); - aesop_timer(RUNTIME*1000); -#endif printf("Server shutting down cleanly.\n"); fflush(NULL); - triton_mercury_svr_finalize(); -#if 0 - triton_signal_finalize(); -#endif + triton_mercury_engine_finalize(); aesop_timer_finalize(); + triton_signal_finalize(); return(0); } hooks/post-receive --
participants (1)
-
noreply@mcs.anl.gov