int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { int status = 0; try { Consumer_Client client; status = client.init (argc, argv); if (status != 0) { ACE_ERROR_RETURN ((LM_ERROR, "Error: Client init failed.\n"), 1); } CosNotifyChannelAdmin::EventChannel_var ec = client.create_event_channel ("MyEventChannel", 0); #ifdef TEST_QOS_MAX_QUEUE_LENGTH ACE_OS::printf ("%s: setting max queue length to 1000\n", argv[0]); CosNotification::AdminProperties properties(1); properties.length(1); properties[0].name = CORBA::string_dup (CosNotification::MaxQueueLength); properties[0].value <<= 1000; ec->set_admin(properties); #endif //TEST_QOS_MAX_QUEUE_LENGTH CORBA::ORB_ptr orb = client.orb (); CORBA::Object_var object = orb->string_to_object (ior); MonitorTestInterface_var sig = MonitorTestInterface::_narrow (object.in ()); if (CORBA::is_nil (sig.in ())) { ACE_ERROR_RETURN ((LM_ERROR, "Error: Narrow failed.\n"), 1); } CosNotifyChannelAdmin::ConsumerAdmin_var admin = create_consumeradmin (ec.in ()); if (CORBA::is_nil (admin.in ())) { ACE_ERROR_RETURN ((LM_ERROR, "Error: nil ConsumerAdmin.\n"), 1); } create_consumers (admin.in (), &client); sig->running (MonitorTestInterface::Consumer); ACE_DEBUG ((LM_DEBUG, "\nConsumer waiting for events...\n")); FILE* ready_file = ACE_OS::fopen (ACE_TEXT_ALWAYS_CHAR(ready_output_file), "w"); if (ready_file == 0) { ACE_ERROR_RETURN ((LM_ERROR, "Cannot open ready file for writing\n"), 1); } ACE_OS::fprintf (ready_file, "ready\n"); ACE_OS::fclose (ready_file); client.ORB_run (); #ifdef PAUSE_ON_EXIT _cputs( "All events received. Still connected.\n"); _cputs( "Hit a key to exit consumer: " ); _getch(); #endif // PAUSE_ON_EXIT ACE_DEBUG ((LM_DEBUG, "Consumer done.\n")); consumer_1->disconnect (); ec->destroy (); sig->finished (MonitorTestInterface::Consumer); } catch (const CORBA::Exception& e) { e._tao_print_exception ("Consumer Error: "); status = 1; } return status; }