summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Multiple/Multiple.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Multiple/Multiple.cpp')
-rw-r--r--trunk/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Multiple/Multiple.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Multiple/Multiple.cpp b/trunk/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Multiple/Multiple.cpp
new file mode 100644
index 00000000000..4af0b93b9aa
--- /dev/null
+++ b/trunk/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Multiple/Multiple.cpp
@@ -0,0 +1,151 @@
+// $Id$
+
+#include "Multiple.h"
+
+Multiple::Multiple (void)
+ : cos_ec_ (CosEventChannelAdmin::EventChannel::_nil ()),
+ service_name ("CosEventService"),
+ orb_ (CORBA::ORB::_nil ())
+{
+ // No-Op.
+}
+
+
+Multiple::~Multiple (void)
+{
+ // No-Op.
+}
+
+int
+Multiple::init (int argc, char *argv[])
+{
+ if (init_ORB (argc, argv) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "init_ORB returned error.\n"),
+ -1);
+
+ if (this->parse_args (argc, argv) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "parse error returned error.\n"),
+ -1);
+
+ if (init_CosEC () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "init_CosEC returned error.\n"),
+ -1);
+ return 0;
+}
+
+int
+Multiple::init_ORB (int argc, char *argv [])
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ this->orb_ = CORBA::ORB_init (argc,
+ argv,
+ ""
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var poa_object =
+ this->orb_->resolve_initial_references("RootPOA"
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (CORBA::is_nil (poa_object.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ -1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception in Multiple::init_ORB\n");
+ return -1;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK_RETURN (-1);
+
+ return 0;
+}
+
+int
+Multiple::init_CosEC (void)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ // Initialization of the naming service.
+ if (this->naming_client_.init (this->orb_.in ()) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t) Unable to initialize "
+ "the TAO_Naming_Client. \n"),
+ -1);
+
+ CosNaming::Name ec_ref_name (1);
+ ec_ref_name.length (1);
+ ec_ref_name[0].id =
+ CORBA::string_dup (this->service_name);
+
+ CORBA::Object_var EC_obj =
+ this->naming_client_->resolve (ec_ref_name
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ // The CORBA::Object_var object is downcast to
+ // CosEventChannelAdmin::EventChannel
+ // using the <_narrow> method.
+ this->cos_ec_ =
+ CosEventChannelAdmin::EventChannel::_narrow (EC_obj.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception in Multiple::init_ORB\n");
+ return -1;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK_RETURN (-1);
+
+ return 0;
+}
+
+int
+Multiple::runORB (void)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "run"), 1);
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+
+void
+Multiple::shutdown (void)
+{
+ if (!this->orb_->_nil ())
+ this->orb_->shutdown ();
+}