summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp')
-rw-r--r--TAO/orbsvcs/tests/Notify/Blocking/Structured_Consumer.cpp185
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;