Beispiel #1
0
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;
}
Beispiel #3
0
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();
}
Beispiel #4
0
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;
}
Beispiel #6
0
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;
}
Beispiel #8
0
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;
}