static void test_send_then_message_requested_and_replied_callback_is_called() { init_messenger( "/tmp" ); const char service_name[] = "Say HELLO"; expect_value( callback_req_hello, tag, 43556 ); expect_string( callback_req_hello, data, "HELLO" ); expect_value( callback_req_hello, len, 6 ); add_message_requested_callback( service_name, callback_req_hello ); expect_value( callback_rep_hello_end, tag, 65534 ); expect_string( callback_rep_hello_end, data, "OLLEH" ); expect_value( callback_rep_hello_end, len, 6 ); expect_value( callback_rep_hello_end, user_data, NULL ); add_message_replied_callback( service_name, callback_rep_hello_end ); send_request_message( service_name, service_name, 43556, "HELLO", strlen( "HELLO" ) + 1, NULL ); start_messenger(); start_event_handler(); delete_message_replied_callback( service_name, callback_rep_hello_end ); delete_message_requested_callback( service_name, callback_req_hello ); delete_send_queue( lookup_hash_entry( send_queues, service_name ) ); finalize_messenger(); }
bool init_monitoring( void ) { set_service_name(); add_message_received_callback( get_service_name(), handle_notification ); add_message_replied_callback( get_service_name(), handle_reply ); return true; }
int main( int argc, char *argv[] ) { init_trema( &argc, &argv ); add_periodic_event_callback( 1, send_request, NULL ); add_message_replied_callback( get_trema_name(), recv_reply ); start_trema(); }
static void test_double_add_message_replied_callback_prints_error_message() { init_messenger( "/tmp" ); const char service_name[] = "Some Service"; char expected_mes[ 1024+1 ] = {}; snprintf( expected_mes, 1024, "Multiple message_requested/replied handler is not supported. ( service_name = %s, message_type = %#x, callback = %p )", service_name, MESSAGE_TYPE_REPLY, callback_rep_hello2 ); check_warn = true; assert_true( add_message_replied_callback( service_name, callback_rep_hello_end ) ); expect_string( mock_warn_check, message, expected_mes ); assert_true( add_message_replied_callback( service_name, callback_rep_hello2 ) ); check_warn = false; finalize_messenger(); }
bool init_packetin_filter_interface( void ) { if ( initialized ) { return false; } set_client_service_name(); add_message_replied_callback( get_client_service_name(), handle_reply ); initialized = true; return true; }
static void test_add_1_message_requested_and_replied_callback_each_prints_no_error_message() { init_messenger( "/tmp" ); const char service_name[] = "Some Service"; check_warn = true; assert_true( add_message_requested_callback( service_name, callback_req_hello ) ); assert_true( add_message_replied_callback( service_name, callback_rep_hello_end ) ); check_warn = false; finalize_messenger(); }
bool init_event_forward_interface( void ) { if ( efi_queue_name != NULL ) { warn( "already initialized." ); return false; } efi_queue_name = xcalloc( 1, MESSENGER_SERVICE_NAME_LENGTH ); int chWrite = snprintf( efi_queue_name, MESSENGER_SERVICE_NAME_LENGTH, "%s-efic-%d", get_trema_name(), trema_getpid() ); if ( chWrite >= MESSENGER_SERVICE_NAME_LENGTH ) { snprintf( efi_queue_name, MESSENGER_SERVICE_NAME_LENGTH, "efic-%d", trema_getpid() ); } // management reply handler add_message_replied_callback( efi_queue_name, handle_efi_reply ); efi_tx_table = create_hash( compare_uint32, hash_uint32 ); return true; }
int main( int argc, char *argv[] ) { // Initialize the Trema world init_trema( &argc, &argv ); // Parse arguments parse_arguments( argc, argv ); // Set a handler to handle application specific management reply add_message_replied_callback( get_trema_name(), handle_reply ); // Send an application specific management request send_application_request(); // Set timeout add_periodic_event_callback( 5, timeout, NULL ); // Main loop start_trema(); return EXIT_SUCCESS; }