summaryrefslogtreecommitdiff
path: root/TAO/CIAO/examples/Hello/Receiver/Receiver_exec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/examples/Hello/Receiver/Receiver_exec.cpp')
-rw-r--r--TAO/CIAO/examples/Hello/Receiver/Receiver_exec.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/TAO/CIAO/examples/Hello/Receiver/Receiver_exec.cpp b/TAO/CIAO/examples/Hello/Receiver/Receiver_exec.cpp
new file mode 100644
index 00000000000..9be84b94558
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Receiver/Receiver_exec.cpp
@@ -0,0 +1,123 @@
+//$Id$
+/*
+ * @file Receiver_exec.cpp
+ *
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ */
+
+#include "Receiver_exec.h"
+#include "CIAO_common.h"
+
+MyImpl::Receiver_exec_i::Receiver_exec_i ()
+{
+}
+
+MyImpl::Receiver_exec_i::~Receiver_exec_i ()
+{
+}
+
+void
+MyImpl::Receiver_exec_i::push_click_in (Hello::timeout *
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ //Get the message from the Sender first.
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver - Informed by the Sender \n"));
+
+ Hello::message_var rev
+ = this->context_->get_connection_read_message (ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (rev.in ()))
+ ACE_THROW (CORBA::BAD_INV_ORDER ());
+
+ CORBA::String_var str =
+ rev->get_message (ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Receiver - Got message from the server [%s] \n",
+ str.in () ));
+}
+
+// Operations from Components::SessionComponen
+void
+MyImpl::Receiver_exec_i::set_session_context (Components::SessionContext_ptr ctx
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::Receiver_exec_i::set_session_context\n"));
+
+ this->context_ =
+ Hello::CCM_Receiver_Context::_narrow (ctx
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (this->context_.in ()))
+ ACE_THROW (CORBA::INTERNAL ());
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::Receiver_exec_i::ccm_activate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::Receiver_exec_i::ccm_activate\n"));
+
+ // @@ This hack work around a missing feature in CIAO's assembly
+ // mechanism where a Softpkg descriptor can specify it's dependency
+ // to a valuetype factory and instruct the deployment framework to
+ // initialize and register the corresponding valuefactory in the
+ // component server. Here, we are registering the valuefactory
+ // explicitly to work around this problem.
+ char *argv[1] = { "Receiver_exec"};
+ int argc = sizeof(argv)/sizeof(argv[0]);
+ CORBA::ORB_var orb = CORBA::ORB_init(argc, argv ACE_ENV_ARG_PARAMETER);
+
+ CIAO_REGISTER_VALUE_FACTORY (orb.in(),
+ Hello::timeout_init,
+ Hello::timeout);
+}
+
+void
+MyImpl::Receiver_exec_i::ccm_passivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::Receiver_exec_i::ccm_passivate\n"));
+}
+
+void
+MyImpl::Receiver_exec_i::ccm_remove (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::Receiver_exec_i::ccm_remove\n"));
+}
+
+
+MyImpl::ReceiverHome_exec_i::ReceiverHome_exec_i ()
+{
+}
+
+MyImpl::ReceiverHome_exec_i::~ReceiverHome_exec_i ()
+{
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::ReceiverHome_exec_i::create (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::Receiver_exec_i;
+}
+
+
+extern "C" RECEIVER_EXEC_Export ::Components::HomeExecutorBase_ptr
+createReceiverHome_Impl (void)
+{
+ return new MyImpl::ReceiverHome_exec_i ();
+}