diff options
Diffstat (limited to 'CIAO/examples/Swapping/Sender')
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender.cidl | 17 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender.idl | 32 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender.mpc | 121 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec.cpp | 196 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec.h | 172 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec_1.cpp | 140 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec_1.h | 113 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec_1_export.h | 54 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec_2.cpp | 125 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec_2.h | 114 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec_2_export.h | 54 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_exec_export.h | 54 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_stub_export.h | 54 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/Sender_svnt_export.h | 54 | ||||
-rw-r--r-- | CIAO/examples/Swapping/Sender/starter.cpp | 97 |
15 files changed, 1397 insertions, 0 deletions
diff --git a/CIAO/examples/Swapping/Sender/Sender.cidl b/CIAO/examples/Swapping/Sender/Sender.cidl new file mode 100644 index 00000000000..8ce22a223b0 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender.cidl @@ -0,0 +1,17 @@ +//$Id$ + +#ifndef SENDER_CIDL +#define SENDER_CIDL + +#include "Sender.idl" + +composition session Sender_Impl +{ + home executor SenderHome_Exec + { + implements Hello::SenderHome; + manages Sender_Exec; + }; +}; + +#endif /* SENDER_CIDL */ diff --git a/CIAO/examples/Swapping/Sender/Sender.idl b/CIAO/examples/Swapping/Sender/Sender.idl new file mode 100644 index 00000000000..e2c8ca64b0e --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender.idl @@ -0,0 +1,32 @@ +//$Id$ + +#ifndef CIAO_SENDER_IDL +#define CIAO_SENDER_IDL + + +#include "../Hello_Base/Hello_Base.idl" + +module Hello +{ + /* This is a Sender specific interface which will be used to get the + * process start. + */ + + interface trigger + { + void start (); + }; + + component Sender supports trigger + { + provides ReadMessage push_message; + publishes TimeOut click_out; + attribute string local_message; + }; + + home SenderHome manages Sender + { + }; + +}; +#endif /*CIAO_SENDER_IDL*/ diff --git a/CIAO/examples/Swapping/Sender/Sender.mpc b/CIAO/examples/Swapping/Sender/Sender.mpc new file mode 100644 index 00000000000..d0d42c7c8bc --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender.mpc @@ -0,0 +1,121 @@ +// $Id$ +// This file is generated with "generate_component_mpc_extra.pl -p Hello_Base Sender" + +project(HelloB_Sender_DnC_Upgradeable_stub): ciao_client_dnc { + avoids += ace_for_tao + after += Hello_Base_DnC_Upgradeable_stub + sharedname = Sender_DnC_Upgradeable_stub + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export -Wb,stub_export_include=Sender_stub_export.h -Wb,skel_export_macro=SENDER_SVNT_Export -Wb,skel_export_include=Sender_svnt_export.h + dynamicflags = SENDER_STUB_BUILD_DLL + libs += Hello_Base_DnC_Upgradeable_stub + + IDL_Files { + Sender.idl + } + + Source_Files { + SenderC.cpp + + } +} + +project(HelloB_Sender_DnC_Upgradeable_svnt) : ciao_servant_dnc { + avoids += ace_for_tao + after += Hello_Base_DnC_Upgradeable_svnt \ + HelloB_Sender_DnC_Upgradeable_stub + sharedname = Sender_DnC_Upgradeable_svnt + libs += Sender_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_stub \ + Hello_Base_DnC_Upgradeable_svnt + + idlflags += -Wb,export_macro=SENDER_SVNT_Export -Wb,export_include=Sender_svnt_export.h + dynamicflags = SENDER_SVNT_BUILD_DLL + cidlflags -= -- + cidlflags += --custom-container upgradeable -- + + CIDL_Files { + Sender.cidl + } + + IDL_Files { + SenderE.idl << SenderE.idl + } + + Source_Files { + SenderEC.cpp + SenderS.cpp + Sender_svnt.cpp + } +} + +project(HelloB_Sender_DnC_Upgradeable_exec) : ciao_component_dnc { + avoids += ace_for_tao + after += HelloB_Sender_DnC_Upgradeable_svnt + sharedname = Sender_DnC_Upgradeable_exec + libs += Sender_DnC_Upgradeable_stub Sender_DnC_Upgradeable_svnt Hello_Base_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_svnt + + idlflags += -Wb,export_macro=SENDER_EXEC_Export -Wb,export_include=Sender_exec_export.h + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Sender_exec.cpp + } +} + +project(HelloB_Sender_DnC_Upgradeable_exec_1) : ciao_component_dnc { + avoids += ace_for_tao + after += HelloB_Sender_DnC_Upgradeable_svnt \ + HelloB_Sender_DnC_Upgradeable_exec + sharedname = Sender_DnC_Upgradeable_exec_1 + libs += Sender_DnC_Upgradeable_stub Sender_DnC_Upgradeable_svnt \ + Sender_DnC_Upgradeable_exec Hello_Base_DnC_Upgradeable_stub \ + Hello_Base_DnC_Upgradeable_svnt + + idlflags += -Wb,export_macro=SENDER_EXEC_1_Export -Wb,\ + export_include=Sender_exec_1_export.h + dynamicflags = SENDER_EXEC_1_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Sender_exec_1.cpp + } +} + +project(HelloB_Sender_DnC_Upgradeable_exec_2) : ciao_component_dnc { + avoids += ace_for_tao + after += HelloB_Sender_DnC_Upgradeable_svnt \ + HelloB_Sender_DnC_Upgradeable_exec + sharedname = Sender_DnC_Upgradeable_exec_2 + libs += Sender_DnC_Upgradeable_stub Sender_DnC_Upgradeable_svnt \ + Sender_DnC_Upgradeable_exec Hello_Base_DnC_Upgradeable_stub \ + Hello_Base_DnC_Upgradeable_svnt + + idlflags += -Wb,export_macro=SENDER_EXEC_2_Export -Wb,\ + export_include=Sender_exec_2_export.h + dynamicflags = SENDER_EXEC_2_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Sender_exec_2.cpp + } +} + +project (Hello_DnC_Upgradeable_Starter) : ciao_client_dnc, valuetype{ + avoids += ace_for_tao + exename = Upgradeable_starter + after += HelloB_Sender_DnC_Upgradeable_stub + libs += Sender_DnC_Upgradeable_stub Hello_Base_DnC_Upgradeable_stub + + IDL_Files { + } + + Source_Files { + starter.cpp + } +} diff --git a/CIAO/examples/Swapping/Sender/Sender_exec.cpp b/CIAO/examples/Swapping/Sender/Sender_exec.cpp new file mode 100644 index 00000000000..eeacef71fd2 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec.cpp @@ -0,0 +1,196 @@ +//$Id$ + +#include "Sender_exec.h" + +const char* first_exe_dll_name = "Sender_DnC_exec_1"; +const char* first_exe_entrypt = "createSenderExec_Impl"; +const char* second_exe_dll_name = "Sender_DnC_exec_2"; +const char* second_exe_entrypt = "createSenderExec_Impl"; + +namespace CIDL_Sender_Impl +{ + char* + Message_Impl::get_message () + { + ACE_DEBUG ((LM_DEBUG, "Sender sending out message. \n")); + return CORBA::string_dup (component_.message_.in ()); + } + + Sender_exec_i::~Sender_exec_i () + { + } + + void + Sender_exec_i::local_message (const char * local_message) + { + message_ = CORBA::string_dup (local_message); + } + + char * + Sender_exec_i::local_message () + { + return CORBA::string_dup(message_. in()); + } + + Hello::CCM_ReadMessage_ptr + Sender_exec_i::get_push_message () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec.i::get_push_message called\n ")); + return ( new Message_Impl (*this) ); + } + + void + Sender_exec_i::start () + { + Hello::TimeOut_var event = new OBV_Hello::TimeOut; + ACE_DEBUG ((LM_DEBUG, "Sender initiates the process.\n")); + this->context_->push_click_out (event); + } + + void + Sender_exec_i::set_session_context (Components::SessionContext_ptr ctx) + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::set_session_context\n")); + + this->context_ = + Sender_Exec_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::ciao_preactivate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_i::ciao_preactivate\n")); + } + + void + Sender_exec_i::ccm_activate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_i::ccm_activate\n")); + } + + void + Sender_exec_i::ciao_postactivate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_i::ciao_postactivate\n")); + } + + void + Sender_exec_i::ccm_passivate () + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::ccm_passivate\n")); + } + + void + Sender_exec_i::ccm_remove () + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_i::ccm_remove\n")); + } + + + SenderHome_exec_i::SenderHome_exec_i () + { + } + + SenderHome_exec_i::~SenderHome_exec_i () + { + } + + SenderSwap_exec_i::SenderSwap_exec_i () + : count_ (0) + { + } + + SenderSwap_exec_i::~SenderSwap_exec_i () + { + } + + ::Components::EnterpriseComponent_ptr + SenderSwap_exec_i::incarnate () + { + ExecFactory first_exec_creator = 0; + ExecFactory second_exec_creator = 0; + ACE_DLL first_dll, second_dll; + + if (first_dll.open (first_exe_dll_name, + ACE_DEFAULT_SHLIB_MODE, 0) != 0) + { + ACE_DEBUG ((LM_DEBUG, "Could not open the DLL %s\n", first_exe_dll_name)); + return 0; + } + + if (second_dll.open (second_exe_dll_name, + ACE_DEFAULT_SHLIB_MODE, 0) != 0) + { + ACE_DEBUG ((LM_DEBUG, "Could not open the DLL %s\n", + second_exe_dll_name)); + return 0; + } + + if (first_exe_entrypt == 0 || second_exe_entrypt == 0) + { + ACE_DEBUG ((LM_DEBUG, "NIL entry points\n")); + return 0; + } + + void *void_ptr = 0; + ptrdiff_t tmp = 0; + + if (0 == this->count_) + { + // Cast the void* to non-pointer type first - it's not legal to + // cast a pointer-to-object directly to a pointer-to-function. + void_ptr = first_dll.symbol (first_exe_entrypt); + tmp = reinterpret_cast<ptrdiff_t> (void_ptr); + first_exec_creator = reinterpret_cast<ExecFactory> (tmp); + + Components::EnterpriseComponent_var first_executor = + first_exec_creator (this); + count_++; + return first_executor._retn (); + } + else if (-1 == count_) + { + // Cast the void* to non-pointer type first - it's not legal to + // cast a pointer-to-object directly to a pointer-to-function. + void_ptr = second_dll.symbol (second_exe_entrypt); + tmp = reinterpret_cast<ptrdiff_t> (void_ptr); + second_exec_creator = reinterpret_cast<ExecFactory> (tmp); + + Components::EnterpriseComponent_var second_executor = + second_exec_creator (this); + --count_; + return second_executor._retn (); + } + + return 0; + } + + ::Components::EnterpriseComponent_ptr + SenderSwap_exec_i::etherealize () + { + return 0; + } + + ::Components::EnterpriseComponent_ptr + SenderHome_exec_i::create () + { + ACE_DEBUG ((LM_DEBUG, "%P|%t) creating SenderHome \n")); + return new SenderSwap_exec_i; + } + + extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr + createSenderHome_Impl (void) + { + return new SenderHome_exec_i (); + } +} + diff --git a/CIAO/examples/Swapping/Sender/Sender_exec.h b/CIAO/examples/Swapping/Sender/Sender_exec.h new file mode 100644 index 00000000000..734991a1311 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec.h @@ -0,0 +1,172 @@ +//$Id$ +//============================================================ +/** + * @file Sender_exec.h + * + * Header file for the Executor implementation. + */ +//============================================================ + +#ifndef SENDER_EXEC_H +#define SENDER_EXEC_H + +#include "ciao/CIAO_SwapExecC.h" +#include "SenderEC.h" +#include "Sender_exec_export.h" +#include "tao/LocalObject.h" +#include "ace/DLL.h" +#include "ciao/CCM_EventsC.h" + +namespace CIDL_Sender_Impl +{ + class SENDER_EXEC_Export Sender_exec_i : + public virtual Sender_Exec, + public virtual TAO_Local_RefCounted_Object + { + + public: + /// Default constructor. + Sender_exec_i () + : message_(CORBA::string_dup ("Default Message")) + { + } + + /// Secondary construction. + Sender_exec_i (const char* local_message) + : message_ (CORBA::string_dup (local_message)) + { + } + + /// Default destructor. + virtual ~Sender_exec_i (); + + /// Operation to set the value of the attribute + virtual void local_message (const char * local_message); + + /// Operation to get the value of the attribute + virtual char * local_message (); + + /* Operations for obtaining the interface reference. */ + /* This method will be used in the assembly face so the + * ObjRef of this read_message facet will be sent to the + * client side(receptacle). + */ + // Note: You can specify the return type as ::Hello::CCM_message * + virtual Hello::CCM_ReadMessage_ptr + get_push_message (); + + + // Operation inside of the trigger interface. + virtual void start (); + + // Operations from Components::SessionComponent + virtual void set_session_context (Components::SessionContext_ptr ctx); + + virtual void ciao_preactivate (); + + virtual void ccm_activate (); + + virtual void ciao_postactivate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + protected: + /// Copmponent specific context + Sender_Exec_Context_var context_; + + private: + CORBA::String_var message_; + + friend class Message_Impl; + }; + + + // + // + // + class Message_Impl : public virtual Hello::CCM_ReadMessage, + public virtual TAO_Local_RefCounted_Object + { + public: + Message_Impl (Sender_exec_i& component) + : component_ (component) + { + } + + virtual char * + get_message (); + + private: + Sender_exec_i& component_; + }; + + class SenderSwap_exec_i; + + + typedef ::Components::EnterpriseComponent_ptr (*ExecFactory) (SenderSwap_exec_i *); + + /** + * @class Sender_exec_i + * + * Sender executor implementation class. + */ + + class SENDER_EXEC_Export SenderSwap_exec_i : + public virtual CIAO::Swap_Exec, + public virtual TAO_Local_RefCounted_Object + { + public: + SenderSwap_exec_i (); + + ~SenderSwap_exec_i (); + + virtual ::Components::EnterpriseComponent_ptr + incarnate (); + + virtual ::Components::EnterpriseComponent_ptr + etherealize (); + + void consumers (::Components::ConsumerDescriptions *p) + { + this->consumers_ = p; + } + + ::Components::ConsumerDescriptions *consumers (void) + { + return this->consumers_._retn (); + } + + protected: + int count_; + + ::Components::ConsumerDescriptions_var consumers_; + }; + + class SENDER_EXEC_Export SenderHome_exec_i : + public virtual SenderHome_Exec, + public virtual TAO_Local_RefCounted_Object + { + public: + /// Default ctor. + SenderHome_exec_i (); + + /// Default dtor. + virtual ~SenderHome_exec_i (); + + // Implicit home operations. + + virtual ::Components::EnterpriseComponent_ptr + create (); + + + }; + + extern "C" SENDER_EXEC_Export ::Components::HomeExecutorBase_ptr + createSenderHome_Impl (void); +} + +#endif /* SENDER_EXEC_H */ + + diff --git a/CIAO/examples/Swapping/Sender/Sender_exec_1.cpp b/CIAO/examples/Swapping/Sender/Sender_exec_1.cpp new file mode 100644 index 00000000000..c6534ba1125 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec_1.cpp @@ -0,0 +1,140 @@ +//$Id$ + +#include "Sender_exec_1.h" +#include "Sender_exec.h" +#include "ciao/Servant_Activator.h" + +namespace CIDL_Sender_Impl +{ + char* + Message_Impl_1::get_message () + { + ACE_DEBUG ((LM_DEBUG, "Sender 1 sending out message. \n")); + return CORBA::string_dup (component_.message_.in ()); + } + + Sender_exec_1_i::~Sender_exec_1_i () + { + } + + void + Sender_exec_1_i::local_message (const char * local_message) + { + message_ = CORBA::string_dup (local_message); + } + + char * + Sender_exec_1_i::local_message () + { + return CORBA::string_dup(message_.in ()); + } + + Hello::CCM_ReadMessage_ptr + Sender_exec_1_i::get_push_message () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_1_i::get_push_message called\n")); + return ( new Message_Impl_1 (*this) ); + } + + void + Sender_exec_1_i::start () + { + Hello::TimeOut_var event = new OBV_Hello::TimeOut; + ACE_DEBUG ((LM_DEBUG, "Sender 1 initiates the process.\n")); + this->context_->push_click_out (event); + } + + void + Sender_exec_1_i::set_session_context (Components::SessionContext_ptr ctx) + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_1_i::set_session_context\n")); + + this->context_ = + Sender_Exec_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + } + + void + Sender_exec_1_i::ciao_preactivate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_1_i::ciao_preactivate\n")); + } + + void + Sender_exec_1_i::ccm_activate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_1_i::ccm_activate\n")); + + CORBA::Object_var o = + this->context_->get_CCM_object (); + } + + void + Sender_exec_1_i::ciao_postactivate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_1_i::ciao_postactivate\n")); + } + + void + Sender_exec_1_i::ccm_passivate () + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_1_i::ccm_passivate\n")); + + Components::ConsumerDescriptions_var retval = + this->context_->get_registered_consumers ("click_out"); + + this->base_exec_->consumers (retval._retn ()); + + CORBA::Object_var o = + this->context_->get_CCM_object (); + + Hello::Sender_var sender = + Hello::Sender::_narrow (o.in ()); + + Components::FacetDescriptions_var facets = + sender->get_all_facets (); + + const CORBA::ULong facet_len = facets->length (); + CORBA::ULong i = 0; + + for (i = 0; i < facet_len; ++i) + { + this->context_->remove_facet (facets[i]->facet_ref ()); + /* + this->context_->update_port_activator (oid); + + this->context_->deactivate_facet (oid); + */ + } + + /* + this->context_->deactivate_facet ("Hello_Sender_push_message"); + this->context_->update_port_activator ("Hello_Sender_push_message"); + */ + } + + void + Sender_exec_1_i::ccm_remove () + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_1_i::ccm_remove\n")); + } + + extern "C" SENDER_EXEC_1_Export ::Components::EnterpriseComponent_ptr + createSenderExec_Impl (SenderSwap_exec_i *p) + { + Sender_exec_1_i *tmp = new Sender_exec_1_i (); + + tmp->swap_exec (p); + + return tmp; + } +} + diff --git a/CIAO/examples/Swapping/Sender/Sender_exec_1.h b/CIAO/examples/Swapping/Sender/Sender_exec_1.h new file mode 100644 index 00000000000..a86088af781 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec_1.h @@ -0,0 +1,113 @@ +//$Id$ +//============================================================ +/** + * @file Sender_exec_1.h + * + * Header file for the Executor implementation. + */ +//============================================================ + +#ifndef SENDER_EXEC_1_H +#define SENDER_EXEC_1_H + +#include "ciao/CIAO_SwapExecC.h" +#include "SenderEC.h" +#include "Sender_exec_1_export.h" +#include "tao/LocalObject.h" + +namespace CIDL_Sender_Impl +{ + class SenderSwap_exec_i; + + + class SENDER_EXEC_1_Export Sender_exec_1_i : + public virtual Sender_Exec, + public virtual TAO_Local_RefCounted_Object + { + + public: + /// Default constructor. + Sender_exec_1_i () {}; + + /// Secondary construction. + Sender_exec_1_i (const char* local_message, + SenderSwap_exec_i *e) + : message_ (CORBA::string_dup (local_message)) + , base_exec_ (e) + { + } + + /// Default destructor. + virtual ~Sender_exec_1_i (); + + /// Operation to set the value of the attribute + virtual void local_message (const char * local_message); + + /// Operation to get the value of the attribute + virtual char * local_message (); + + /* Operations for obtaining the interface reference. */ + /* This method will be used in the assembly face so the + * ObjRef of this read_message facet will be sent to the + * client side(receptacle). + */ + // Note: You can specify the return type as ::Hello::CCM_message * + virtual Hello::CCM_ReadMessage_ptr + get_push_message (); + + + // Operation inside of the trigger interface. + virtual void start (); + + // Operations from Components::SessionComponent + virtual void set_session_context (Components::SessionContext_ptr ctx); + + virtual void ciao_preactivate (); + + virtual void ccm_activate (); + + virtual void ciao_postactivate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + void swap_exec (SenderSwap_exec_i *p) + { + this->base_exec_ = p; + } + + protected: + /// Copmponent specific context + Sender_Exec_Context_var context_; + + private: + CORBA::String_var message_; + + // my incarnator + SenderSwap_exec_i *base_exec_; + + friend class Message_Impl_1; + }; + + class Message_Impl_1 : public virtual Hello::CCM_ReadMessage, + public virtual TAO_Local_RefCounted_Object + { + public: + Message_Impl_1 (Sender_exec_1_i& component) + : component_ (component) + { + } + + virtual char * + get_message (); + + private: + Sender_exec_1_i& component_; + }; + + extern "C" SENDER_EXEC_1_Export ::Components::EnterpriseComponent_ptr + createSenderExec_Impl (SenderSwap_exec_i *p); +} + +#endif /* SENDER_EXEC_H */ diff --git a/CIAO/examples/Swapping/Sender/Sender_exec_1_export.h b/CIAO/examples/Swapping/Sender/Sender_exec_1_export.h new file mode 100644 index 00000000000..ed661c8ae77 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec_1_export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl SENDER_EXEC_1 +// ------------------------------ +#ifndef SENDER_EXEC_1_EXPORT_H +#define SENDER_EXEC_1_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (SENDER_EXEC_1_HAS_DLL) +# define SENDER_EXEC_1_HAS_DLL 1 +#endif /* ! SENDER_EXEC_1_HAS_DLL */ + +#if defined (SENDER_EXEC_1_HAS_DLL) && (SENDER_EXEC_1_HAS_DLL == 1) +# if defined (SENDER_EXEC_1_BUILD_DLL) +# define SENDER_EXEC_1_Export ACE_Proper_Export_Flag +# define SENDER_EXEC_1_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define SENDER_EXEC_1_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* SENDER_EXEC_1_BUILD_DLL */ +# define SENDER_EXEC_1_Export ACE_Proper_Import_Flag +# define SENDER_EXEC_1_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define SENDER_EXEC_1_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* SENDER_EXEC_1_BUILD_DLL */ +#else /* SENDER_EXEC_1_HAS_DLL == 1 */ +# define SENDER_EXEC_1_Export +# define SENDER_EXEC_1_SINGLETON_DECLARATION(T) +# define SENDER_EXEC_1_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* SENDER_EXEC_1_HAS_DLL == 1 */ + +// Set SENDER_EXEC_1_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (SENDER_EXEC_1_NTRACE) +# if (ACE_NTRACE == 1) +# define SENDER_EXEC_1_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define SENDER_EXEC_1_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !SENDER_EXEC_1_NTRACE */ + +#if (SENDER_EXEC_1_NTRACE == 1) +# define SENDER_EXEC_1_TRACE(X) +#else /* (SENDER_EXEC_1_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define SENDER_EXEC_1_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (SENDER_EXEC_1_NTRACE == 1) */ + +#endif /* SENDER_EXEC_1_EXPORT_H */ + +// End of auto generated file. diff --git a/CIAO/examples/Swapping/Sender/Sender_exec_2.cpp b/CIAO/examples/Swapping/Sender/Sender_exec_2.cpp new file mode 100644 index 00000000000..7063a79eb4f --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec_2.cpp @@ -0,0 +1,125 @@ +//$Id$ + +#include "Sender_exec_2.h" +#include "Sender_exec.h" + +namespace CIDL_Sender_Impl +{ + char* + Message_Impl_2::get_message () + { + ACE_DEBUG ((LM_DEBUG, "Sender 2 sending out message. \n")); + return CORBA::string_dup (component_.message_.in ()); + } + + Sender_exec_2_i::~Sender_exec_2_i () + { + } + + void + Sender_exec_2_i::local_message (const char * local_message) + { + message_ = CORBA::string_dup (local_message); + } + + char * + Sender_exec_2_i::local_message () + { + return CORBA::string_dup(message_.in ()); + } + + Hello::CCM_ReadMessage_ptr + Sender_exec_2_i::get_push_message () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_2_i::get_push_message called\n")); + return ( new Message_Impl_2 (*this) ); + } + + void + Sender_exec_2_i::start () + { + Hello::TimeOut_var event = new OBV_Hello::TimeOut; + ACE_DEBUG ((LM_DEBUG, "Sender 2 initiates the process.\n")); + this->context_->push_click_out (event); + } + + void + Sender_exec_2_i::set_session_context (Components::SessionContext_ptr ctx) + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_2_i::set_session_context\n")); + + this->context_ = + Sender_Exec_Context::_narrow (ctx); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + } + + void + Sender_exec_2_i::ciao_preactivate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_2_i::ciao_preactivate\n")); + } + + void + Sender_exec_2_i::ccm_activate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_2_i::ccm_activate\n")); + + ::Components::ConsumerDescriptions_var c = + this->base_exec_->consumers (); + + if (CORBA::is_nil (this->context_.in ())) + { + throw CORBA::INTERNAL (); + } + + CORBA::Object_var o = + this->context_->get_CCM_object (); + + Hello::Sender_var sender = + Hello::Sender::_narrow (o.in ()); + + for (CORBA::ULong cnt = 0; cnt != c->length (); ++cnt) + { + sender->subscribe ("click_out", + (*c)[cnt]->consumer ()); + } + } + + void + Sender_exec_2_i::ciao_postactivate () + { + ACE_DEBUG ((LM_DEBUG, + "Sender_exec_2_i::ciao_postactivate\n")); + } + + void + Sender_exec_2_i::ccm_passivate () + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_2_i::ccm_passivate\n")); + } + + void + Sender_exec_2_i::ccm_remove () + { + ACE_DEBUG ((LM_DEBUG, "Sender_exec_2_i::ccm_remove\n")); + } + + extern "C" SENDER_EXEC_2_Export ::Components::EnterpriseComponent_ptr + createSenderExec_Impl (SenderSwap_exec_i *p) + { + Sender_exec_2_i *tmp = + new Sender_exec_2_i (); + + tmp->swap_exec (p); + + return tmp; + } +} + diff --git a/CIAO/examples/Swapping/Sender/Sender_exec_2.h b/CIAO/examples/Swapping/Sender/Sender_exec_2.h new file mode 100644 index 00000000000..a1184736587 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec_2.h @@ -0,0 +1,114 @@ +//$Id$ +//============================================================ +/** + * @file Sender_exec_2.h + * + * Header file for the Executor implementation. + */ +//============================================================ + +#ifndef SENDER_EXEC_2_H +#define SENDER_EXEC_2_H + +#include "ciao/CIAO_SwapExecC.h" +#include "SenderEC.h" +#include "Sender_exec_2_export.h" +#include "tao/LocalObject.h" + +namespace CIDL_Sender_Impl +{ + class SenderSwap_exec_i; + + class SENDER_EXEC_2_Export Sender_exec_2_i : + public virtual Sender_Exec, + public virtual TAO_Local_RefCounted_Object + { + + public: + /// Default constructor. + Sender_exec_2_i () + : message_(CORBA::string_dup ("Default Message")) + { + } + + /// Secondary construction. + Sender_exec_2_i (const char* local_message, + SenderSwap_exec_i *e) + : message_ (CORBA::string_dup (local_message)) + , base_exec_ (e) + { + } + + /// Default destructor. + virtual ~Sender_exec_2_i (); + + /// Operation to set the value of the attribute + virtual void local_message (const char * local_message); + + /// Operation to get the value of the attribute + virtual char * local_message (); + + /* Operations for obtaining the interface reference. */ + /* This method will be used in the assembly face so the + * ObjRef of this read_message facet will be sent to the + * client side(receptacle). + */ + // Note: You can specify the return type as ::Hello::CCM_message * + virtual Hello::CCM_ReadMessage_ptr + get_push_message (); + + + // Operation inside of the trigger interface. + virtual void start (); + + // Operations from Components::SessionComponent + virtual void set_session_context (Components::SessionContext_ptr ctx); + + virtual void ciao_preactivate (); + + virtual void ccm_activate (); + + virtual void ciao_postactivate (); + + virtual void ccm_passivate (); + + virtual void ccm_remove (); + + void swap_exec (SenderSwap_exec_i *p) + { + this->base_exec_ = p; + } + + protected: + /// Copmponent specific context + Sender_Exec_Context_var context_; + + private: + CORBA::String_var message_; + + SenderSwap_exec_i *base_exec_; + + friend class Message_Impl_2; + }; + + class Message_Impl_2 : public virtual Hello::CCM_ReadMessage, + public virtual TAO_Local_RefCounted_Object + { + public: + Message_Impl_2 (Sender_exec_2_i& component) + : component_ (component) + { + } + + virtual char * + get_message (); + + private: + Sender_exec_2_i& component_; + }; + + extern "C" SENDER_EXEC_2_Export ::Components::EnterpriseComponent_ptr + createSenderExec_Impl (SenderSwap_exec_i *p); +} + +#endif /* SENDER_EXEC_H */ diff --git a/CIAO/examples/Swapping/Sender/Sender_exec_2_export.h b/CIAO/examples/Swapping/Sender/Sender_exec_2_export.h new file mode 100644 index 00000000000..c03b5754ca7 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec_2_export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl SENDER_EXEC_2 +// ------------------------------ +#ifndef SENDER_EXEC_2_EXPORT_H +#define SENDER_EXEC_2_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (SENDER_EXEC_2_HAS_DLL) +# define SENDER_EXEC_2_HAS_DLL 1 +#endif /* ! SENDER_EXEC_2_HAS_DLL */ + +#if defined (SENDER_EXEC_2_HAS_DLL) && (SENDER_EXEC_2_HAS_DLL == 1) +# if defined (SENDER_EXEC_2_BUILD_DLL) +# define SENDER_EXEC_2_Export ACE_Proper_Export_Flag +# define SENDER_EXEC_2_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define SENDER_EXEC_2_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* SENDER_EXEC_2_BUILD_DLL */ +# define SENDER_EXEC_2_Export ACE_Proper_Import_Flag +# define SENDER_EXEC_2_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define SENDER_EXEC_2_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* SENDER_EXEC_2_BUILD_DLL */ +#else /* SENDER_EXEC_2_HAS_DLL == 1 */ +# define SENDER_EXEC_2_Export +# define SENDER_EXEC_2_SINGLETON_DECLARATION(T) +# define SENDER_EXEC_2_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* SENDER_EXEC_2_HAS_DLL == 1 */ + +// Set SENDER_EXEC_2_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (SENDER_EXEC_2_NTRACE) +# if (ACE_NTRACE == 1) +# define SENDER_EXEC_2_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define SENDER_EXEC_2_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !SENDER_EXEC_2_NTRACE */ + +#if (SENDER_EXEC_2_NTRACE == 1) +# define SENDER_EXEC_2_TRACE(X) +#else /* (SENDER_EXEC_2_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define SENDER_EXEC_2_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (SENDER_EXEC_2_NTRACE == 1) */ + +#endif /* SENDER_EXEC_2_EXPORT_H */ + +// End of auto generated file. diff --git a/CIAO/examples/Swapping/Sender/Sender_exec_export.h b/CIAO/examples/Swapping/Sender/Sender_exec_export.h new file mode 100644 index 00000000000..dbaa7ea15bc --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_exec_export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl SENDER_EXEC +// ------------------------------ +#ifndef SENDER_EXEC_EXPORT_H +#define SENDER_EXEC_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (SENDER_EXEC_HAS_DLL) +# define SENDER_EXEC_HAS_DLL 1 +#endif /* ! SENDER_EXEC_HAS_DLL */ + +#if defined (SENDER_EXEC_HAS_DLL) && (SENDER_EXEC_HAS_DLL == 1) +# if defined (SENDER_EXEC_BUILD_DLL) +# define SENDER_EXEC_Export ACE_Proper_Export_Flag +# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* SENDER_EXEC_BUILD_DLL */ +# define SENDER_EXEC_Export ACE_Proper_Import_Flag +# define SENDER_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* SENDER_EXEC_BUILD_DLL */ +#else /* SENDER_EXEC_HAS_DLL == 1 */ +# define SENDER_EXEC_Export +# define SENDER_EXEC_SINGLETON_DECLARATION(T) +# define SENDER_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* SENDER_EXEC_HAS_DLL == 1 */ + +// Set SENDER_EXEC_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (SENDER_EXEC_NTRACE) +# if (ACE_NTRACE == 1) +# define SENDER_EXEC_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define SENDER_EXEC_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !SENDER_EXEC_NTRACE */ + +#if (SENDER_EXEC_NTRACE == 1) +# define SENDER_EXEC_TRACE(X) +#else /* (SENDER_EXEC_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define SENDER_EXEC_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (SENDER_EXEC_NTRACE == 1) */ + +#endif /* SENDER_EXEC_EXPORT_H */ + +// End of auto generated file. diff --git a/CIAO/examples/Swapping/Sender/Sender_stub_export.h b/CIAO/examples/Swapping/Sender/Sender_stub_export.h new file mode 100644 index 00000000000..28c5d3131d0 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_stub_export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl SENDER_STUB +// ------------------------------ +#ifndef SENDER_STUB_EXPORT_H +#define SENDER_STUB_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (SENDER_STUB_HAS_DLL) +# define SENDER_STUB_HAS_DLL 1 +#endif /* ! SENDER_STUB_HAS_DLL */ + +#if defined (SENDER_STUB_HAS_DLL) && (SENDER_STUB_HAS_DLL == 1) +# if defined (SENDER_STUB_BUILD_DLL) +# define SENDER_STUB_Export ACE_Proper_Export_Flag +# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* SENDER_STUB_BUILD_DLL */ +# define SENDER_STUB_Export ACE_Proper_Import_Flag +# define SENDER_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* SENDER_STUB_BUILD_DLL */ +#else /* SENDER_STUB_HAS_DLL == 1 */ +# define SENDER_STUB_Export +# define SENDER_STUB_SINGLETON_DECLARATION(T) +# define SENDER_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* SENDER_STUB_HAS_DLL == 1 */ + +// Set SENDER_STUB_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (SENDER_STUB_NTRACE) +# if (ACE_NTRACE == 1) +# define SENDER_STUB_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define SENDER_STUB_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !SENDER_STUB_NTRACE */ + +#if (SENDER_STUB_NTRACE == 1) +# define SENDER_STUB_TRACE(X) +#else /* (SENDER_STUB_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define SENDER_STUB_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (SENDER_STUB_NTRACE == 1) */ + +#endif /* SENDER_STUB_EXPORT_H */ + +// End of auto generated file. diff --git a/CIAO/examples/Swapping/Sender/Sender_svnt_export.h b/CIAO/examples/Swapping/Sender/Sender_svnt_export.h new file mode 100644 index 00000000000..53236a883f2 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/Sender_svnt_export.h @@ -0,0 +1,54 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl SENDER_SVNT +// ------------------------------ +#ifndef SENDER_SVNT_EXPORT_H +#define SENDER_SVNT_EXPORT_H + +#include "ace/config-all.h" + +#if !defined (SENDER_SVNT_HAS_DLL) +# define SENDER_SVNT_HAS_DLL 1 +#endif /* ! SENDER_SVNT_HAS_DLL */ + +#if defined (SENDER_SVNT_HAS_DLL) && (SENDER_SVNT_HAS_DLL == 1) +# if defined (SENDER_SVNT_BUILD_DLL) +# define SENDER_SVNT_Export ACE_Proper_Export_Flag +# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* SENDER_SVNT_BUILD_DLL */ +# define SENDER_SVNT_Export ACE_Proper_Import_Flag +# define SENDER_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* SENDER_SVNT_BUILD_DLL */ +#else /* SENDER_SVNT_HAS_DLL == 1 */ +# define SENDER_SVNT_Export +# define SENDER_SVNT_SINGLETON_DECLARATION(T) +# define SENDER_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* SENDER_SVNT_HAS_DLL == 1 */ + +// Set SENDER_SVNT_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (SENDER_SVNT_NTRACE) +# if (ACE_NTRACE == 1) +# define SENDER_SVNT_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define SENDER_SVNT_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !SENDER_SVNT_NTRACE */ + +#if (SENDER_SVNT_NTRACE == 1) +# define SENDER_SVNT_TRACE(X) +#else /* (SENDER_SVNT_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define SENDER_SVNT_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (SENDER_SVNT_NTRACE == 1) */ + +#endif /* SENDER_SVNT_EXPORT_H */ + +// End of auto generated file. diff --git a/CIAO/examples/Swapping/Sender/starter.cpp b/CIAO/examples/Swapping/Sender/starter.cpp new file mode 100644 index 00000000000..92718744cd5 --- /dev/null +++ b/CIAO/examples/Swapping/Sender/starter.cpp @@ -0,0 +1,97 @@ +//$Id$: + +#include "SenderC.h" +#include "ace/Get_Opt.h" + +//IOR file of the Sender +const char * ior = 0; +const char * message = "starters message"; + + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "k:m"); + int c = 0; + + while ((c = get_opts ()) != -1) + { + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case 'm': + message = get_opts.opt_arg (); + break; + + case '?': // display help for use of the server. + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s\n" + "-k <Sender IOR> (default is file://sender.ior)\n", + "-m <Message> (default is starters message)\n" + "\n", + argv [0]), + -1); + break; + } + } + + if (ior == 0) + { + ior = "file://sender.ior"; + } + + return 0; +} + +int +main (int argc, char *argv[]) +{ + try + { + // Initialize orb + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, + ""); + + if (parse_args (argc, argv) != 0) + { + return -1; + } + + CORBA::Object_var obj = + orb->string_to_object (ior); + + Hello::Sender_var sender = Hello::Sender::_narrow (obj.in ()); + + if (CORBA::is_nil (sender.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Unable to acquire Sender's objref\n"), + -1); + } + + char *return_message; + sender->local_message (message); + return_message = sender->local_message (); + ACE_DEBUG ((LM_DEBUG, "the message is %s\n", return_message)); + + sender->start (); + sender->remove (); + + ACE_DEBUG ((LM_DEBUG, "creating one more servant here\n")); + sender->start (); + //sender->remove (); + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Unknown exception \n"); + return -1; + } + + return 0; +} |