diff options
Diffstat (limited to 'TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp')
-rw-r--r-- | TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp | 185 |
1 files changed, 85 insertions, 100 deletions
diff --git a/TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp b/TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp index 97db6fc7f80..7f05025928f 100644 --- a/TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp +++ b/TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp @@ -20,12 +20,11 @@ // ****************************************************************** static const char* ior = "file://supplier.ior"; -static TimeBase::TimeT blocking_timeout = 0; +// TimeT is in 10ths of a microsecond +static TimeBase::TimeT blocking_timeout = 2 * 1000 * 1000 * 10; // 2 secs +// Must match the number sent by supplier. (-1 if blocking_timeout less than 1) static unsigned int expected = 20; - -// ****************************************************************** -// Subroutine Section -// ****************************************************************** +static Notify_Structured_Push_Consumer* consumer_1 = 0; class Consumer_Client : public Notify_Test_Client { @@ -42,29 +41,30 @@ Consumer_Client::parse_args (int argc, char *argv[]) while ((c = get_opts ()) != -1) switch (c) - { - case 'k': - ior = get_opts.optarg; - break; - - case 'e': - expected = ACE_OS::atoi (get_opts.optarg); - break; - - case 't': - blocking_timeout = ACE_OS::atoi (get_opts.optarg); - break; - - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-e <expected events> " - "-t <relative blocking timeout seconds> " - "\n", - argv [0]), - -1); - } + { + case 'k': + ior = get_opts.optarg; + break; + + case 'e': + expected = ACE_OS::atoi (get_opts.optarg); + break; + + case 't': + blocking_timeout = ACE_OS::atoi (get_opts.optarg); + blocking_timeout *= 10 * 1000; + break; + + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "-e <expected events> " + "-t <relative blocking timeout milliseconds> " + "\n", + argv [0]), + -1); + } // Indicates sucessful parsing of the command line return 0; } @@ -92,14 +92,13 @@ create_consumers (CosNotifyChannelAdmin::ConsumerAdmin_ptr admin, ACE_ENV_ARG_DECL) { // startup the consumer - Notify_Structured_Push_Consumer* consumer_1; ACE_NEW_THROW_EX (consumer_1, - Notify_Structured_Push_Consumer ( - "consumer1", - blocking_timeout, - expected, - client->done ()), - CORBA::NO_MEMORY ()); + Notify_Structured_Push_Consumer ( + "consumer1", + blocking_timeout, + expected, + *client), + CORBA::NO_MEMORY ()); consumer_1->init (client->root_poa () ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -115,72 +114,58 @@ int main (int argc, char* argv[]) { int status = 0; ACE_TRY_NEW_ENV - { - Consumer_Client client; - - status = client.init (argc, argv ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (status == 0) - { - CosNotifyChannelAdmin::EventChannel_var ec = - client.create_event_channel ("MyEventChannel", 1 ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::ORB_ptr orb = client.orb (); - CORBA::Object_var object = - orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - sig_var sig = sig::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (sig.in ())) - { - ACE_ERROR_RETURN ((LM_ERROR, - "Object reference <%s> is nil\n", - ior), - 1); - } - - CosNotifyChannelAdmin::ConsumerAdmin_var admin = - create_consumeradmin (ec.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (!CORBA::is_nil (admin.in ())) - { - create_consumers (admin.in (), &client ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - // Tell the supplier to go - sig->go (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::Boolean wait_more = 1; - while (!client.done () || wait_more) - { - // See if we can get any more events - if (client.done () && wait_more) - { - ACE_OS::sleep (5); - wait_more = 0; - } - if (orb->work_pending ()) - { - orb->perform_work (); - } - // Simulate a bit of consumer lag - ACE_OS::sleep (2); - } - } - } - } + { + Consumer_Client client; + + status = client.init (argc, argv ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + if (status != 0) + ACE_ERROR_RETURN ((LM_ERROR, "Error: Client init failed.\n"),1); + + CosNotifyChannelAdmin::EventChannel_var ec = + client.create_event_channel ("MyEventChannel", 1 ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::ORB_ptr orb = client.orb (); + CORBA::Object_var object = + orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + sig_var sig = sig::_narrow (object.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (sig.in ())) + ACE_ERROR_RETURN ((LM_ERROR, "Error: Narrow failed.\n"),1); + + CosNotifyChannelAdmin::ConsumerAdmin_var admin = + create_consumeradmin (ec.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (admin.in ())) + ACE_ERROR_RETURN ((LM_ERROR, "Error: nil ConsumerAdmin.\n"),1); + + create_consumers (admin.in (), &client ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + sig->go (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + ACE_DEBUG((LM_DEBUG, "\nConsumer waiting for events...\n")); + + client.ORB_run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + ACE_DEBUG((LM_DEBUG, "Consumer done.\n")); + consumer_1->disconnect(); + + sig->done (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + } ACE_CATCH (CORBA::Exception, e) - { - ACE_PRINT_EXCEPTION (e, - "Consumer exception: "); - status = 1; - } + { + ACE_PRINT_EXCEPTION (e, "Error: "); + status = 1; + } ACE_ENDTRY; return status; |