diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2012-09-27 09:01:09 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2012-09-27 09:01:09 +0000 |
commit | b6093adbdd49598b34e467e27f4d84eb6fcbc508 (patch) | |
tree | ff6eb668f4007ed3c9237028dd203a10bcc62b72 /CIAO | |
parent | 5ffa6b74c00a887f9a01ab8c9252a17b014fd572 (diff) | |
download | ATCD-b6093adbdd49598b34e467e27f4d84eb6fcbc508.tar.gz |
Diffstat (limited to 'CIAO')
26 files changed, 3647 insertions, 0 deletions
diff --git a/CIAO/examples/Hello_Event/Hello_Base/Hello_Base.idl b/CIAO/examples/Hello_Event/Hello_Base/Hello_Base.idl new file mode 100644 index 00000000000..8df663a1c26 --- /dev/null +++ b/CIAO/examples/Hello_Event/Hello_Base/Hello_Base.idl @@ -0,0 +1,23 @@ +//$Id$: + +#ifndef CIAO_HELLO_IDL +#define CIAO_HELLO_IDL + +#include <Components.idl> + +#pragma ciao lem "../Hello_Base/Hello_BaseE.idl" + +module Hello +{ + interface ReadMessage + { + string get_message(); + }; + + eventtype TimeOut + { + public string data; + }; +}; + +#endif /* CIAO_HELLO_IDL */ diff --git a/CIAO/examples/Hello_Event/Hello_Base/Hello_Base.mpc b/CIAO/examples/Hello_Event/Hello_Base/Hello_Base.mpc new file mode 100644 index 00000000000..b8f35ae53cc --- /dev/null +++ b/CIAO/examples/Hello_Event/Hello_Base/Hello_Base.mpc @@ -0,0 +1,109 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -e -n -l../lib -o../lib Hello_Base" + +project(Hello_Base_idl_gen) : componentidldefaults, avoids_ccm_noevent { + custom_only = 1 + + idlflags += -Wb,stub_export_macro=HELLO_BASE_STUB_Export \ + -Wb,stub_export_include=Hello_Base_stub_export.h \ + -Wb,skel_export_macro=HELLO_BASE_SKEL_Export \ + -Wb,skel_export_include=Hello_Base_skel_export.h \ + -Gxhex -Gxhsk -Gxhst + + IDL_Files { + Hello_Base.idl + } +} + +project(Hello_Base_lem_gen) : ciaoidldefaults, avoids_ccm_noevent { + after += Hello_Base_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=HELLO_BASE_LEM_STUB_Export \ + -Wb,stub_export_include=Hello_Base_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + Hello_BaseE.idl + } +} + +project(Hello_Base_lem_stub) : ccm_svnt, avoids_ccm_noevent { + after += Hello_Base_lem_gen Hello_Base_stub + libs += Hello_Base_stub + + libpaths += ../lib + libout = ../lib + sharedname = Hello_Base_lem_stub + dynamicflags += HELLO_BASE_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseEC.cpp + } + + Header_Files { + Hello_BaseEC.h + Hello_Base_lem_stub_export.h + } + + Inline_Files { + Hello_BaseEC.inl + } +} + +project(Hello_Base_stub) : ccm_stub, avoids_ccm_noevent { + after += Hello_Base_idl_gen + libs += + + libpaths += ../lib + libout = ../lib + sharedname = Hello_Base_stub + dynamicflags += HELLO_BASE_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseC.cpp + } + + Header_Files { + Hello_BaseC.h + Hello_Base_stub_export.h + } + + Inline_Files { + Hello_BaseC.inl + } +} + + +project(Hello_Base_skel) : ciao_executor, avoids_ccm_noevent { + after += Hello_Base_stub Hello_Base_lem_stub + sharedname = Hello_Base_skel + libs += Hello_Base_stub + + + libpaths += ../lib + libout = ../lib + dynamicflags += HELLO_BASE_SKEL_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Hello_BaseS.cpp + } + + Header_Files { + Hello_BaseS.h + Hello_Base_skel_export.h + } + + Inline_Files { + } +} + + diff --git a/CIAO/examples/Hello_Event/Receiver/Receiver.idl b/CIAO/examples/Hello_Event/Receiver/Receiver.idl new file mode 100644 index 00000000000..92ae30acb36 --- /dev/null +++ b/CIAO/examples/Hello_Event/Receiver/Receiver.idl @@ -0,0 +1,19 @@ +//$Id$: + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "../Hello_Base/Hello_Base.idl" + +module Hello +{ + component Receiver + { + uses ReadMessage read_message; + consumes TimeOut click_in; + + attribute short iterations; + }; + +}; +#endif /*RECEIVER_IDL*/ diff --git a/CIAO/examples/Hello_Event/Receiver/Receiver.mpc b/CIAO/examples/Hello_Event/Receiver/Receiver.mpc new file mode 100644 index 00000000000..c1d6b30836d --- /dev/null +++ b/CIAO/examples/Hello_Event/Receiver/Receiver.mpc @@ -0,0 +1,140 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -e -l ../lib -o ../lib -p Hello_Base Receiver" + +project(Hello_Base_Receiver_idl_gen) : componentidldefaults, avoids_ccm_noevent { + custom_only = 1 + + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h \ + -Gxhex -Gxhsk -Gxhst + + IDL_Files { + Receiver.idl + } +} + +project(Hello_Base_Receiver_lem_gen) : ciaoidldefaults, avoids_ccm_noevent { + after += Hello_Base_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + ReceiverE.idl + } +} + +project(Hello_Base_Receiver_lem_stub) : ccm_svnt, avoids_ccm_noevent { + after += Hello_Base_Receiver_lem_gen Hello_Base_Receiver_stub Hello_Base_stub Hello_Base_lem_stub + libs += Hello_Base_stub Hello_Base_lem_stub Receiver_stub + + libpaths += ../lib + libout = ../lib + sharedname = Receiver_lem_stub + dynamicflags += RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverEC.cpp + } + + Header_Files { + ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + ReceiverEC.inl + } +} + +project(Hello_Base_Receiver_stub) : ccm_stub, avoids_ccm_noevent { + after += Hello_Base_Receiver_idl_gen Hello_Base_stub Hello_Base_lem_stub + libs += Hello_Base_stub Hello_Base_lem_stub + + libpaths += ../lib + libout = ../lib + sharedname = Receiver_stub + dynamicflags += RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverC.cpp + } + + Header_Files { + ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + ReceiverC.inl + } +} + +project(Hello_Base_Receiver_exec) : ciao_executor, avoids_ccm_noevent { + after += Hello_Base_lem_stub Hello_Base_Receiver_lem_stub Hello_Base_Receiver_stub + sharedname = Receiver_exec + libs += Hello_Base_lem_stub Receiver_stub Receiver_lem_stub Hello_Base_stub Hello_Base_lem_stub + + libpaths += ../lib + libout = ../lib + dynamicflags += RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Receiver_exec.cpp + } + + Header_Files { + Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(Hello_Base_Receiver_svnt) : ciao_servant, avoids_ccm_noevent { + after += Hello_Base_skel Hello_Base_lem_stub Hello_Base_Receiver_lem_stub + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub \ + Hello_Base_skel \ + Hello_Base_stub \ + Hello_Base_lem_stub + + libpaths += ../lib + libout = ../lib + dynamicflags += RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + ReceiverS.cpp + Receiver_svnt.cpp + } + + Header_Files { + ReceiverS.h + Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + } +} + + diff --git a/CIAO/examples/Hello_Event/Receiver/Receiver_exec.cpp b/CIAO/examples/Hello_Event/Receiver/Receiver_exec.cpp new file mode 100644 index 00000000000..e7ea1966612 --- /dev/null +++ b/CIAO/examples/Hello_Event/Receiver/Receiver_exec.cpp @@ -0,0 +1,142 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v2.0.2 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +#include "Receiver_exec.h" +#include "ace/OS_NS_unistd.h" + +namespace CIAO_Hello_Receiver_Impl +{ + + /** + * Component Executor Implementation Class: Receiver_exec_i + */ + + Receiver_exec_i::Receiver_exec_i (void) + : iterations_ (10) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + // Supported operations and attributes. + + // Component attributes and port operations. + + void + Receiver_exec_i::push_click_in ( + ::Hello::TimeOut * ev) + { + /* Your code here. */ + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Receiver - Informed by the Sender with message [%C]\n"), + ev->data ())); + Hello::ReadMessage_var rev = this->ciao_context_->get_connection_read_message (); + if (CORBA::is_nil (rev.in ())) + throw CORBA::BAD_INV_ORDER (); + for (CORBA::Short i = 0; i < this->iterations_; ++i) + { + CORBA::String_var str = rev->get_message (); + ACE_DEBUG ((LM_DEBUG, + "Receiver - Got message from the sender [%C].\n", + str.in ())); + ACE_Time_Value tv (1, 0); + ACE_OS::sleep (tv); + } + } + + ::CORBA::Short + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations ( + const ::CORBA::Short iterations) + { + this->iterations_ = iterations; + } + + // Operations from Components::SessionComponent. + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->ciao_context_ = + ::Hello::CCM_Receiver_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->ciao_context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_DEBUG, + "Receiver_exec_i::configuration_complete\n")); + } + + void + Receiver_exec_i::ccm_activate (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_activate\n")); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_passivate\n")); + } + + void + Receiver_exec_i::ccm_remove (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_DEBUG, "Receiver_exec_i::ccm_remove\n")); + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/CIAO/examples/Hello_Event/Receiver/Receiver_exec.h b/CIAO/examples/Hello_Event/Receiver/Receiver_exec.h new file mode 100644 index 00000000000..3d13c3a5e0a --- /dev/null +++ b/CIAO/examples/Hello_Event/Receiver/Receiver_exec.h @@ -0,0 +1,113 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v2.0.2 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ +#ifndef CIAO_RECEIVER_EXEC_RZ2R5K_H_ +#define CIAO_RECEIVER_EXEC_RZ2R5K_H_ + +#include /**/ "ace/pre.h" + +#include "ReceiverEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Receiver_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Hello_Receiver_Impl +{ + + /** + * Component Executor Implementation Class: Receiver_exec_i + */ + + class Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + /** @name Supported operations and attributes. */ + //@{ + + //@} + + /** @name Component attributes and port operations. */ + //@{ + + virtual void + push_click_in ( + ::Hello::TimeOut * ev); + + virtual ::CORBA::Short iterations (void); + + virtual void iterations (::CORBA::Short iterations); + //@} + + /** @name Operations from Components::SessionComponent. */ + //@{ + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + //@} + + /** @name User defined public operations. */ + //@{ + + //@} + + private: + ::Hello::CCM_Receiver_Context_var ciao_context_; + + /** @name Component attributes. */ + //@{ + + ::CORBA::Short iterations_; + //@} + + /** @name User defined members. */ + //@{ + + //@} + + /** @name User defined private operations. */ + //@{ + + //@} + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Receiver_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ diff --git a/CIAO/examples/Hello_Event/Sender/Sender.idl b/CIAO/examples/Hello_Event/Sender/Sender.idl new file mode 100644 index 00000000000..edf43943bfc --- /dev/null +++ b/CIAO/examples/Hello_Event/Sender/Sender.idl @@ -0,0 +1,29 @@ +//$Id$ + +#ifndef SENDER_IDL +#define SENDER_IDL + + +#include "../Hello_Base/Hello_Base.idl" +#include "tao/StringSeq.pidl" + +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; + }; +}; +#endif /*SENDER_IDL*/ diff --git a/CIAO/examples/Hello_Event/Sender/Sender.mpc b/CIAO/examples/Hello_Event/Sender/Sender.mpc new file mode 100644 index 00000000000..739ab7594f6 --- /dev/null +++ b/CIAO/examples/Hello_Event/Sender/Sender.mpc @@ -0,0 +1,159 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -e -l ../lib -o ../lib -c starter -p Hello_Base Sender" + +project(Hello_Base_Sender_idl_gen) : componentidldefaults, avoids_ccm_noevent { + custom_only = 1 + + 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 \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -Gxhex -Gxhsk -Gxhst + + IDL_Files { + Sender.idl + } +} + +project(Hello_Base_Sender_lem_gen) : ciaoidldefaults, avoids_ccm_noevent { + after += Hello_Base_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst + + IDL_Files { + SenderE.idl + } +} + +project(Hello_Base_Sender_lem_stub) : ccm_svnt, avoids_ccm_noevent { + after += Hello_Base_Sender_lem_gen Hello_Base_Sender_stub Hello_Base_stub Hello_Base_lem_stub + libs += Hello_Base_stub Hello_Base_lem_stub Sender_stub + + libpaths += ../lib + libout = ../lib + sharedname = Sender_lem_stub + dynamicflags += SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderEC.cpp + } + + Header_Files { + SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + SenderEC.inl + } +} + +project(Hello_Base_Sender_stub) : ccm_stub, avoids_ccm_noevent { + after += Hello_Base_Sender_idl_gen Hello_Base_stub Hello_Base_lem_stub + libs += Hello_Base_stub Hello_Base_lem_stub + + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags += SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderC.cpp + } + + Header_Files { + SenderC.h + Sender_stub_export.h + } + + Inline_Files { + SenderC.inl + } +} + +project(Hello_Base_Sender_exec) : ciao_executor, avoids_ccm_noevent { + after += Hello_Base_lem_stub Hello_Base_Sender_lem_stub Hello_Base_Sender_stub + sharedname = Sender_exec + libs += Hello_Base_lem_stub Sender_stub Sender_lem_stub Hello_Base_stub Hello_Base_lem_stub + + libpaths += ../lib + libout = ../lib + dynamicflags += SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Sender_exec.cpp + } + + Header_Files { + Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(Hello_Base_Sender_svnt) : ciao_servant, avoids_ccm_noevent { + after += Hello_Base_skel Hello_Base_lem_stub Hello_Base_Sender_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub \ + Hello_Base_skel \ + Hello_Base_stub \ + Hello_Base_lem_stub + + libpaths += ../lib + libout = ../lib + dynamicflags += SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + SenderS.cpp + Sender_svnt.cpp + } + + Header_Files { + SenderS.h + Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + } +} + +project (Hello_Base_starter) : ccm_stub, valuetype, avoids_ccm_noevent { + exename = starter + after += Hello_Base_Sender_stub + libs += Sender_stub Hello_Base_stub Hello_Base_lem_stub + + libpaths += ../lib + IDL_Files { + } + + Source_Files { + starter.cpp + } + + Header_Files { + } + + Inline_Files { + } +} + diff --git a/CIAO/examples/Hello_Event/Sender/Sender_exec.cpp b/CIAO/examples/Hello_Event/Sender/Sender_exec.cpp new file mode 100644 index 00000000000..cf8ef4f7eca --- /dev/null +++ b/CIAO/examples/Hello_Event/Sender/Sender_exec.cpp @@ -0,0 +1,180 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v2.0.2 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ + +#include "Sender_exec.h" + +namespace CIAO_Hello_Sender_Impl +{ + + /** + * Facet Executor Implementation Class: push_message_exec_i + */ + + push_message_exec_i::push_message_exec_i ( + ::Hello::CCM_Sender_Context_ptr ctx, + Sender_exec_i& sender) + : ciao_context_ ( + ::Hello::CCM_Sender_Context::_duplicate (ctx)) + , sender_ (sender) + { + } + + push_message_exec_i::~push_message_exec_i (void) + { + } + + // Operations from ::Hello::ReadMessage + + char * + push_message_exec_i::get_message (void) + { + /* Your code here. */ + CORBA::String_var message = this->sender_.local_message(); + ACE_DEBUG ((LM_EMERGENCY, "Sender returning message: [%C]\n", + message.in ())); + return CORBA::string_dup (message.in ()); + } + + /** + * Component Executor Implementation Class: Sender_exec_i + */ + + Sender_exec_i::Sender_exec_i (void) + : local_message_ ("Hello, world!") + { + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + // Supported operations and attributes. + + void + Sender_exec_i::start (void) + { + /* Your code here. */ + Hello::TimeOut_var event = new OBV_Hello::TimeOut; + event->data ("ACE/TAO/CIAO"); + ACE_DEBUG ((LM_EMERGENCY, "Sender initiates the process.\n")); + this->ciao_context_->push_click_out (event.in ()); + } + + // Component attributes and port operations. + + ::Hello::CCM_ReadMessage_ptr + Sender_exec_i::get_push_message (void) + { + if ( ::CORBA::is_nil (this->ciao_push_message_.in ())) + { + push_message_exec_i *tmp = 0; + ACE_NEW_RETURN ( + tmp, + push_message_exec_i ( + this->ciao_context_.in (), + *this), + ::Hello::CCM_ReadMessage::_nil ()); + + this->ciao_push_message_ = tmp; + } + + return + ::Hello::CCM_ReadMessage::_duplicate ( + this->ciao_push_message_.in ()); + } + + char * + Sender_exec_i::local_message (void) + { + return ::CORBA::string_dup (this->local_message_.in ()); + } + + void + Sender_exec_i::local_message ( + const char * local_message) + { + this->local_message_ = ::CORBA::string_dup (local_message); + } + + // Operations from Components::SessionComponent. + + void + Sender_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->ciao_context_ = + ::Hello::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->ciao_context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_EMERGENCY, + "Sender_exec_i::configuration_complete\n")); + } + + void + Sender_exec_i::ccm_activate (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_EMERGENCY, + "Sender_exec_i::ccm_activate\n")); + } + + void + Sender_exec_i::ccm_passivate (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_EMERGENCY, "Sender_exec_i::ccm_passivate\n")); + } + + void + Sender_exec_i::ccm_remove (void) + { + /* Your code here. */ + ACE_DEBUG ((LM_EMERGENCY, "Sender_exec_i::ccm_remove\n")); + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/CIAO/examples/Hello_Event/Sender/Sender_exec.h b/CIAO/examples/Hello_Event/Sender/Sender_exec.h new file mode 100644 index 00000000000..9cb5cd83f4a --- /dev/null +++ b/CIAO/examples/Hello_Event/Sender/Sender_exec.h @@ -0,0 +1,142 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v2.0.2 + * TAO and the TAO IDL Compiler have been developed by: + * Center for Distributed Object Computing + * Washington University + * St. Louis, MO + * USA + * http://www.cs.wustl.edu/~schmidt/doc-center.html + * and + * Distributed Object Computing Laboratory + * University of California at Irvine + * Irvine, CA + * USA + * and + * Institute for Software Integrated Systems + * Vanderbilt University + * Nashville, TN + * USA + * http://www.isis.vanderbilt.edu/ + * + * Information about TAO is available at: + * http://www.cs.wustl.edu/~schmidt/TAO.html + **/ +#ifndef CIAO_SENDER_EXEC_NECH9V_H_ +#define CIAO_SENDER_EXEC_NECH9V_H_ + +#include /**/ "ace/pre.h" + +#include "SenderEC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Sender_exec_export.h" +#include "tao/LocalObject.h" + +namespace CIAO_Hello_Sender_Impl +{ + class Sender_exec_i; + /** + * Provider Executor Implementation Class: push_message_exec_i + */ + + class push_message_exec_i + : public virtual ::Hello::CCM_ReadMessage, + public virtual ::CORBA::LocalObject + { + public: + push_message_exec_i ( + ::Hello::CCM_Sender_Context_ptr ctx, + Sender_exec_i& sender); + virtual ~push_message_exec_i (void); + + /** @name Operations and attributes from Hello::ReadMessage */ + //@{ + + virtual + char * get_message (void); + //@} + + private: + ::Hello::CCM_Sender_Context_var ciao_context_; + Sender_exec_i& sender_; + + }; + + /** + * Component Executor Implementation Class: Sender_exec_i + */ + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + /** @name Supported operations and attributes. */ + //@{ + + virtual void start (void); + + //@} + + /** @name Component attributes and port operations. */ + //@{ + + virtual ::Hello::CCM_ReadMessage_ptr + get_push_message (void); + + virtual char * local_message (void); + + virtual void local_message (const char * local_message); + //@} + + /** @name Operations from Components::SessionComponent. */ + //@{ + virtual void set_session_context (::Components::SessionContext_ptr ctx); + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + //@} + + /** @name User defined public operations. */ + //@{ + + //@} + + private: + ::Hello::CCM_Sender_Context_var ciao_context_; + + /** @name Component attributes. */ + //@{ + ::Hello::CCM_ReadMessage_var ciao_push_message_; + + ::CORBA::String_var local_message_; + //@} + + /** @name User defined members. */ + //@{ + + //@} + + /** @name User defined private operations. */ + //@{ + + //@} + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Hello_Sender_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ diff --git a/CIAO/examples/Hello_Event/Sender/starter.cpp b/CIAO/examples/Hello_Event/Sender/starter.cpp new file mode 100644 index 00000000000..4a1c04fbe9a --- /dev/null +++ b/CIAO/examples/Hello_Event/Sender/starter.cpp @@ -0,0 +1,88 @@ +//$Id$: + +#include "SenderC.h" +#include "ace/Get_Opt.h" + +// IOR file of the Sender +const ACE_TCHAR * ior = 0; +const char * message = 0; + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:m:")); + int c = 0; + + while ((c = get_opts ()) != -1) + { + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case 'm': + message = ACE_TEXT_ALWAYS_CHAR(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>\n", + argv [0]), + -1); + break; + } + } + + if (ior == 0) + { + ior = ACE_TEXT("file://Sender.ior"); + } + + return 0; +} + +int +ACE_TMAIN (int argc, ACE_TCHAR *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); + } + + if (message) + { + sender->local_message (message); + } + + sender->start (); + + orb->destroy (); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Unknown exception\n"); + return -1; + } + + return 0; +} diff --git a/CIAO/examples/Hello_Event/descriptors/DeploymentPlan.cdp b/CIAO/examples/Hello_Event/descriptors/DeploymentPlan.cdp new file mode 100644 index 00000000000..530921c2934 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/DeploymentPlan.cdp @@ -0,0 +1,257 @@ +<!-- $Id$ --> +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Hello_Deployment_1</label> + <UUID>Hello_Deployment_1</UUID> + + <!-- Implementations declarations --> + + <implementation xmi:id="ReceiverComponentImplementation"> + <name>ReceiverComponentImplementation</name> + <source/> + <artifact xmi:idref="Receiver_ExecArtifact" /> + <artifact xmi:idref="Receiver_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_exec</string> + </value> + </value> + </execParameter> + </implementation> + + <implementation xmi:id="SenderComponentImplementation"> + <name>SenderComponentImplementation</name> + <source/> + <artifact xmi:idref="Sender_ExecArtifact" /> + <artifact xmi:idref="Sender_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_exec</string> + </value> + </value> + </execParameter> + </implementation> + + <instance xmi:id="ReceiverComponentInstance"> + <name>ReceiverComponent</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="ReceiverComponentImplementation" /> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver.ior</string> + </value> + </value> + </configProperty> + <configProperty> + <name>iterations</name> + <value> + <type> + <kind>tk_short</kind> + </type> + <value> + <short>10</short> + </value> + </value> + </configProperty> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver</string> + </value> + </value> + </configProperty> + </instance> + + <instance xmi:id="SenderComponentInstance"> + <name>SenderComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="SenderComponentImplementation" /> + <configProperty> + <name>local_message</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>hello, world!</string> + </value> + </value> + </configProperty> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender.ior</string> + </value> + </value> + </configProperty> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.RegisterNaming</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender</string> + </value> + </value> + </configProperty> + </instance> + + <connection> + <name>MessageConnection</name> + <internalEndpoint> + <portName>read_message</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_message</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + </connection> + + <connection> + <name>EventConnection</name> + <internalEndpoint> + <portName>click_out</portName> + <provider>false</provider> + <kind>EventPublisher</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>click_in</portName> + <provider>true</provider> + <kind>EventConsumer</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + </connection> + + <!-- Artifacts declarations --> + <artifact xmi:id="Receiver_ExecArtifact"> + <name>Receiver_exec</name> + <source/> + <node/> + <location>Receiver_exec</location> + </artifact> + <artifact xmi:id="Receiver_SvntArtifact"> + <name>Receiver_svnt</name> + <source/> + <node/> + <location>Receiver_svnt</location> + </artifact> + + <artifact xmi:id="Sender_ExecArtifact"> + <name>Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + <artifact xmi:id="Sender_SvntArtifact"> + <name>Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + +</Deployment:DeploymentPlan> diff --git a/CIAO/examples/Hello_Event/descriptors/DeploymentPlan_without_ns.cdp b/CIAO/examples/Hello_Event/descriptors/DeploymentPlan_without_ns.cdp new file mode 100644 index 00000000000..8396ead84d7 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/DeploymentPlan_without_ns.cdp @@ -0,0 +1,224 @@ +<!-- $Id$ --> +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Hello_Deployment_1</label> + <UUID>Hello_Deployment_1</UUID> + + <!-- Implementations declarations --> + + <implementation xmi:id="Hello_ReceiverComponentImplementation"> + <name>Hello_ReceiverComponentImplementation</name> + <source/> + <artifact xmi:idref="Hello_Receiver_ExecArtifact" /> + <artifact xmi:idref="Hello_Receiver_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_exec</string> + </value> + </value> + </execParameter> + </implementation> + + <implementation xmi:id="Hello_SenderComponentImplementation"> + <name>Hello_SenderComponentImplementation</name> + <source/> + <artifact xmi:idref="Hello_Sender_ExecArtifact" /> + <artifact xmi:idref="Hello_Sender_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_exec</string> + </value> + </value> + </execParameter> + </implementation> + + <instance xmi:id="Hello_ReceiverComponentInstance"> + <name>Hello_ReceiverComponent</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Hello_ReceiverComponentImplementation" /> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver.ior</string> + </value> + </value> + </configProperty> + </instance> + + <instance xmi:id="Hello_SenderComponentInstance"> + <name>Hello_SenderComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Hello_SenderComponentImplementation" /> + <configProperty> + <name>local_message</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>hello, world!</string> + </value> + </value> + </configProperty> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender.ior</string> + </value> + </value> + </configProperty> + </instance> + + <connection> + <name>MessageConnection</name> + <internalEndpoint> + <portName>read_message</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Hello_ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_message</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Hello_SenderComponentInstance" /> + </internalEndpoint> + </connection> + + <connection> + <name>EventConnection</name> + <internalEndpoint> + <portName>click_out</portName> + <provider>false</provider> + <kind>EventPublisher</kind> + <instance xmi:idref="Hello_SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>click_in</portName> + <provider>true</provider> + <kind>EventConsumer</kind> + <instance xmi:idref="Hello_ReceiverComponentInstance" /> + </internalEndpoint> + </connection> + + <!-- Artifacts declarations --> + <artifact xmi:id="Hello_Receiver_ExecArtifact"> + <name>Receiver_exec</name> + <source/> + <node/> + <location>Receiver_exec</location> + </artifact> + <artifact xmi:id="Hello_Receiver_SvntArtifact"> + <name>Receiver_svnt</name> + <source/> + <node/> + <location>Receiver_svnt</location> + </artifact> + + <artifact xmi:id="Hello_Sender_ExecArtifact"> + <name>Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + <artifact xmi:id="Hello_Sender_SvntArtifact"> + <name>Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + +</Deployment:DeploymentPlan> diff --git a/CIAO/examples/Hello_Event/descriptors/NodeManagerMap.cdd b/CIAO/examples/Hello_Event/descriptors/NodeManagerMap.cdd new file mode 100644 index 00000000000..0bac35a3e21 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/NodeManagerMap.cdd @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<Deployment:domain xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + + <UUID>83D02FE2-A0BD-11DF-A038-005056C00008</UUID> + + <label/> + + <node> + <name>SenderNode</name> + <label/> + <resource> + <name>Node Address</name> + <resourceType>edu.vanderbilt.dre.DAnCE.NodeAddress</resourceType> + <property> + <name>edu.vanderbilt.dre.DAnCE.StringIOR</name> + <kind>Attribute</kind> + <dynamic>false</dynamic> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>corbaloc:iiop:localhost:60001</string> + </value> + </value> + </property> + </resource> + </node> + <node> + <name>ReceiverNode</name> + <label/> + <resource> + <name>Node Address</name> + <resourceType>edu.vanderbilt.dre.DAnCE.NodeAddress</resourceType> + <property> + <name>edu.vanderbilt.dre.DAnCE.StringIOR</name> + <kind>Attribute</kind> + <dynamic>false</dynamic> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>corbaloc:iiop:localhost:60002</string> + </value> + </value> + </property> + </resource> + </node> +</Deployment:domain>
\ No newline at end of file diff --git a/CIAO/examples/Hello_Event/descriptors/NodeMap.cdd b/CIAO/examples/Hello_Event/descriptors/NodeMap.cdd new file mode 100755 index 00000000000..a48f4bc245b --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/NodeMap.cdd @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<Deployment:domain xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + + <UUID>83D02FE2-A0BD-11DF-A038-005056C00008</UUID> + + <label/> + + <node> + <name>NodeOne</name> + <label/> + <resource> + <name>Node Address</name> + <resourceType>edu.vanderbilt.dre.DAnCE.NodeAddress</resourceType> + <property> + <name>edu.vanderbilt.dre.DAnCE.StringIOR</name> + <kind>Attribute</kind> + <dynamic>false</dynamic> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>corbaloc:iiop:localhost:60001</string> + </value> + </value> + </property> + </resource> + </node> +</Deployment:domain> diff --git a/CIAO/examples/Hello_Event/descriptors/PlanLocality_DifferentProcesses.cdp b/CIAO/examples/Hello_Event/descriptors/PlanLocality_DifferentProcesses.cdp new file mode 100755 index 00000000000..b5e971f22c0 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/PlanLocality_DifferentProcesses.cdp @@ -0,0 +1,226 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<!-- $Id$ --> +<Deployment:DeploymentPlan xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + + <UUID>C5CA23E2-2004-11DF-8000-000C2916C803</UUID> + + <implementation xmi:id="_5FFE7D8E-2003-11DF-B472-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.Hello_ReceiverImpl.Hello_ReceiverImpl</name> + <source/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B474-000C2916C803"/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B475-000C2916C803"/> + <execParameter> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_exec</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_svnt</string> + </value> + </value> + </execParameter> + </implementation> + + <implementation xmi:id="_5FFE7D8E-2003-11DF-B473-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.Hello_SenderImpl.Hello_SenderImpl</name> + <source/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B476-000C2916C803"/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B477-000C2916C803"/> + <execParameter> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_exec</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_svnt</string> + </value> + </value> + </execParameter> + </implementation> + + <instance xmi:id="_A7F51814-2003-11DF-8000-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Receiver</name> + <node>NodeOne</node> + <source/> + <implementation xmi:idref="_5FFE7D8E-2003-11DF-B472-000C2916C803"/> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Hello_ReceiverImpl.ior</string> + </value> + </value> + </configProperty> + </instance> + + <instance xmi:id="_AC04995C-2003-11DF-8000-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Sender</name> + <node>NodeOne</node> + <source/> + <implementation xmi:idref="_5FFE7D8E-2003-11DF-B473-000C2916C803"/> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender.ior</string> + </value> + </value> + </configProperty> + <configProperty> + <name>local_message</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>hello, world!</string> + </value> + </value> + </configProperty> + </instance> + + <connection> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Receiver:read_message::PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Sender:push_message</name> + <internalEndpoint> + <portName>read_message</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="_A7F51814-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + <internalEndpoint> + <portName>push_message</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="_AC04995C-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + </connection> + + <connection> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Sender:click_out::PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Receiver:click_in</name> + <internalEndpoint> + <portName>click_out</portName> + <provider>false</provider> + <kind>EventPublisher</kind> + <instance xmi:idref="_AC04995C-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + <internalEndpoint> + <portName>click_in</portName> + <provider>true</provider> + <kind>EventConsumer</kind> + <instance xmi:idref="_A7F51814-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + </connection> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B474-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_svnt</name> + <source/> + <node/> + <location>Receiver_svnt</location> + </artifact> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B475-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_exec</name> + <source/> + <node/> + <location>Receiver_exec</location> + </artifact> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B476-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B477-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + + <localityConstraint> + <constraint>DifferentProcess</constraint> + <constrainedInstance xmi:idref="_AC04995C-2003-11DF-8000-000C2916C803"/> + </localityConstraint> + + <localityConstraint> + <constraint>DifferentProcess</constraint> + <constrainedInstance xmi:idref="_A7F51814-2003-11DF-8000-000C2916C803"/> + </localityConstraint> + +</Deployment:DeploymentPlan> diff --git a/CIAO/examples/Hello_Event/descriptors/PlanLocality_SameProcess.cdp b/CIAO/examples/Hello_Event/descriptors/PlanLocality_SameProcess.cdp new file mode 100755 index 00000000000..e97de2a7f07 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/PlanLocality_SameProcess.cdp @@ -0,0 +1,222 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<!-- $Id$ --> +<Deployment:DeploymentPlan xmlns:Deployment="http://www.omg.org/Deployment" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + + <UUID>CCA28448-2004-11DF-8000-000C2916C803</UUID> + + <implementation xmi:id="_5FFE7D8E-2003-11DF-B472-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.Hello_ReceiverImpl.Hello_ReceiverImpl</name> + <source/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B474-000C2916C803"/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B475-000C2916C803"/> + <execParameter> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_exec</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Receiver_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_svnt</string> + </value> + </value> + </execParameter> + </implementation> + + <implementation xmi:id="_5FFE7D8E-2003-11DF-B473-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.Hello_SenderImpl.Hello_SenderImpl</name> + <source/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B476-000C2916C803"/> + <artifact xmi:idref="_5FFE7D8E-2003-11DF-B477-000C2916C803"/> + <execParameter> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_exec</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Hello_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_svnt</string> + </value> + </value> + </execParameter> + </implementation> + + <instance xmi:id="_A7F51814-2003-11DF-8000-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Receiver</name> + <node>NodeOne</node> + <source/> + <implementation xmi:idref="_5FFE7D8E-2003-11DF-B472-000C2916C803"/> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Hello_ReceiverImpl.ior</string> + </value> + </value> + </configProperty> + </instance> + + <instance xmi:id="_AC04995C-2003-11DF-8000-000C2916C803"> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Sender</name> + <node>NodeOne</node> + <source/> + <implementation xmi:idref="_5FFE7D8E-2003-11DF-B473-000C2916C803"/> + <configProperty> + <name>edu.vanderbilt.dre.DAnCE.InstanceIOR</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender.ior</string> + </value> + </value> + </configProperty> + <configProperty> + <name>local_message</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>hello, world!</string> + </value> + </value> + </configProperty> + </instance> + + <connection> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Receiver:read_message::PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Sender:push_message</name> + <internalEndpoint> + <portName>read_message</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="_A7F51814-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + <internalEndpoint> + <portName>push_message</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="_AC04995C-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + </connection> + + <connection> + <name>PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Sender:click_out::PICML_default_xme_file.ComponentImplementations.NewComponentImplementationContainer.ComponentAssembly.Receiver:click_in</name> + <internalEndpoint> + <portName>click_out</portName> + <provider>false</provider> + <kind>EventPublisher</kind> + <instance xmi:idref="_AC04995C-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + <internalEndpoint> + <portName>click_in</portName> + <provider>true</provider> + <kind>EventConsumer</kind> + <instance xmi:idref="_A7F51814-2003-11DF-8000-000C2916C803"/> + </internalEndpoint> + </connection> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B474-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_svnt</name> + <source/> + <node/> + <location>Receiver_svnt</location> + </artifact> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B475-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_ReceiverArtifacts.Hello_Receiver_exec</name> + <source/> + <node/> + <location>Receiver_exec</location> + </artifact> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B476-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + + <artifact xmi:id="_5FFE7D8E-2003-11DF-B477-000C2916C803"> + <name>PICML_default_xme_file.ImplementationArtifacts.Hello_SenderArtifacts.Hello_Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + + <localityConstraint> + <constraint>SameProcess</constraint> + <constrainedInstance xmi:idref="_A7F51814-2003-11DF-8000-000C2916C803"/> + <constrainedInstance xmi:idref="_AC04995C-2003-11DF-8000-000C2916C803"/> + </localityConstraint> + +</Deployment:DeploymentPlan> diff --git a/CIAO/examples/Hello_Event/descriptors/run_NodeDaemons.pl b/CIAO/examples/Hello_Event/descriptors/run_NodeDaemons.pl new file mode 100755 index 00000000000..50b3930fc64 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/run_NodeDaemons.pl @@ -0,0 +1,42 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$tg = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + +$iorbase1 = "NodeApp1.ior"; +$iorfile1 = $tg->LocalFile ($iorbase1); +$iorbase2 = "NodeApp2.ior"; +$iorfile2 = $tg->LocalFile ($iorbase2); + +#for ($iter = 0; $iter <= $#ARGV; $iter++) { +# if ($ARGV[$iter] eq "-h" || $ARGV[$iter] eq "-?") { +# print "Run_Test Perl script for NodeApplicationTest \n\n"; +# print "run_test \n"; +# print "\n"; +# print "-h -- prints this information\n"; +# exit 0; +# } +#} + +$iorfile1 = $tg->DeleteFile ($iorbase1); +$iorfile2 = $tg->DeleteFile ($iorbase2); + +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +$SV1 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:10001 -s $DANCE_ROOT/bin/dance_locality_manager"); + +$SV2 = $tg->CreateProcess ("$DANCE_ROOT/bin/dance_node_manager", + "-ORBEndpoint iiop://localhost:20001 -s $DANCE_ROOT/bin/dance_locality_manager"); + +$SV1->Spawn (); +$SV2->Spawn (); + +sleep (99999999999); diff --git a/CIAO/examples/Hello_Event/descriptors/run_test.pl b/CIAO/examples/Hello_Event/descriptors/run_test.pl new file mode 100755 index 00000000000..7d4fb2e9057 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/run_test.pl @@ -0,0 +1,236 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +$status = 0; +$cdp_file = "DeploymentPlan.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for daemon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); + $NS->TimedWait (1); + } + # in case shutdown did not perform as expected + $tg_executor->KillAll ('dance_locality_manager'); +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = $tg_daemons[$i]->GetArchDir("$DANCE_ROOT/bin/") . "dance_locality_manager"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/tao_cosnaming", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile -l\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile -l"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/CIAO/examples/Hello_Event/descriptors/run_test_PlanLocality_DifferentProcesses.pl b/CIAO/examples/Hello_Event/descriptors/run_test_PlanLocality_DifferentProcesses.pl new file mode 100755 index 00000000000..ccf44c53969 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/run_test_PlanLocality_DifferentProcesses.pl @@ -0,0 +1,204 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; + +$daemons = 1; +@ports = ( 60001 ); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "NodeOne" ); + +$status = 0; +$dat_file = "NodeMap.cdd"; +$cdp_file = "PlanLocality_DifferentProcesses.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +sub create_targets { + # daemon + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for daemon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + # in case shutdown did not perform as expected + $tg_executor->KillAll ('dance_locality_manager'); +} + + +sub run_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = $tg_daemons[$i]->GetArchDir("$DANCE_ROOT/bin/") . "dance_locality_manager"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke node daemons. +print "Invoking node daemons\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --cdd $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $$daemons; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); + +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/CIAO/examples/Hello_Event/descriptors/run_test_PlanLocality_SameProcess.pl b/CIAO/examples/Hello_Event/descriptors/run_test_PlanLocality_SameProcess.pl new file mode 100755 index 00000000000..d32ce8cc057 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/run_test_PlanLocality_SameProcess.pl @@ -0,0 +1,204 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; + +$daemons = 1; +@ports = ( 60001); +@iorbases = ( "NodeApp1.ior" ); +@iorfiles = 0; +@nodenames = ( "NodeOne" ); + +$status = 0; +$dat_file = "NodeMap.cdd"; +$cdp_file = "PlanLocality_SameProcess.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +sub create_targets { + # daemon + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for daemon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + # in case shutdown did not perform as expected + $tg_executor->KillAll ('dance_locality_manager'); +} + + +sub run_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = $tg_daemons[$i]->GetArchDir("$DANCE_ROOT/bin/") . "dance_locality_manager"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke node daemons. +print "Invoking node daemons\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --cdd $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $$daemons; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); + +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/CIAO/examples/Hello_Event/descriptors/run_test_shs.pl b/CIAO/examples/Hello_Event/descriptors/run_test_shs.pl new file mode 100755 index 00000000000..f115d6b83da --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/run_test_shs.pl @@ -0,0 +1,272 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$TAO_ROOT = "$ENV{'TAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; +$ns_running = 0; + +$nr_daemon = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +$status = 0; +$dat_file = "NodeManagerMap.cdd"; +$cdp_file = "DeploymentPlan.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_shsbase = "SHS_Daemon.ior"; +$ior_shsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +$SHS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_shs = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # shs + $tg_shs = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_shs->AddLibPath ('../lib'); + # daemon + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for daemon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); + $ior_shsfile = $tg_naming->LocalFile ($ior_shsbase); + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $nr_daemon; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_naming->DeleteFile ($ior_nsbase); + $tg_shs->DeleteFile ($ior_shsbase); + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + + if ($ns_running == 1) { + $NS->Kill (); + $NS->TimedWait (1); + } + + if ($shs_running == 1) { + $SHS->Kill (); + $SHS->TimedWait (1); + } + + # in case shutdown did not perform as expected + $tg_executor->KillAll ('dance_locality_manager'); +} + +sub run_node_daemons { + for ($i = 0; $i < $nr_daemon; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = $tg_daemons[$i]->GetArchDir("$DANCE_ROOT/bin/") . "dance_locality_manager"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --instance-nc corbaloc:rir:/NameService --locality-config shs.localityconfig"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/tao_cosnaming", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +print STDERR "Starting Naming Service with -m 0 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +$ns_status = $NS->Spawn (); + +if ($ns_status != 0) { + print STDERR "ERROR: Unable to execute the naming service\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_naming->WaitForFileTimed ($ior_nsbase, + $tg_naming->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find naming service IOR file\n"; + $NS->Kill (); $NS->TimedWait (1); + exit 1; +} + +$ns_running = 1; +# Set up NamingService environment +$ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; + + +print "Starting SHS daemon\n"; +$SHS = $tg_shs->CreateProcess ("$DANCE_ROOT/bin/dance_shs_daemon", ""); + +$shs_status = $SHS->Spawn (); + +if ($shs_status != 0) { + print STDERR "ERROR: Unable to execute the SHS daemon\n"; + kill_open_processes (); + exit 1; +} + +if ($tg_shs->WaitForFileTimed ($ior_shsbase, + $tg_shs->ProcessStartWaitInterval ()) == -1) { + print STDERR "ERROR: cannot find SHS IOR file\n"; + $SHS->Kill (); $SHS->TimedWait (1); + exit 1; +} + +$shs_running = 1; +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --cdd $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile -l\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile -l"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -s\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/CIAO/examples/Hello_Event/descriptors/run_test_without_ns.pl b/CIAO/examples/Hello_Event/descriptors/run_test_without_ns.pl new file mode 100755 index 00000000000..dcc4f99ffc5 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/run_test_without_ns.pl @@ -0,0 +1,204 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::TestTarget; + +$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; +$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; + +$daemons_running = 0; +$em_running = 0; + +$daemons = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +$status = 0; +$dat_file = "NodeManagerMap.cdd"; +$cdp_file = "DeploymentPlan_without_ns.cdp"; + +$controller_exec = "$CIAO_ROOT/examples/Hello/Sender/starter"; + +# ior files other than daemon +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +sub create_targets { + # daemon + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for daemon $i failed\n"; + $tg_daemons[$i]->AddLibPath ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +sub init_ior_files { + $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } + delete_ior_files (); +} + +# Delete if there are any .ior files. +sub delete_ior_files { + for ($i = 0; $i < $daemons; ++$i) { + $tg_daemons[$i]->DeleteFile ($iorbases[$i]); + } + $tg_exe_man->DeleteFile ($ior_embase); + for ($i = 0; $i < $daemons; ++$i) { + $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); + } +} + +sub kill_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } +} + +sub kill_open_processes { + if ($daemons_running == 1) { + kill_node_daemons (); + } + + if ($em_running == 1) { + $EM->Kill (); + $EM->TimedWait (1); + } + # in case shutdown did not perform as expected + $tg_executor->KillAll ('dance_locality_manager'); +} + + +sub run_node_daemons { + for ($i = 0; $i < $daemons; ++$i) { + $iorbase = $iorbases[$i]; + $iorfile = $iorfiles[$i]; + $port = $ports[$i]; + $nodename = $nodenames[$i]; + $iiop = "iiop://localhost:$port"; + $node_app = $tg_daemons[$i]->GetArchDir("$DANCE_ROOT/bin/") . "dance_locality_manager"; + + $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; + $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30"; + + print "Run dance_node_manager with $d_param\n"; + + $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); + $DEAMONS[$i]->Spawn (); + + if ($tg_daemons[$i]->WaitForFileTimed($iorbase, + $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; + for (; $i >= 0; --$i) { + $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); + } + return -1; + } + } + return 0; +} + +create_targets (); +init_ior_files (); + +# Invoke node daemons. +print "Invoking node daemons\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemons\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\n"; +$EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --cdd $dat_file"); +$EM->Spawn (); + +if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; +} + +$em_running = 1; + +# Invoke executor - start the application -. +print "Invoking executor - launch the application -\n"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $$daemons; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Invoking the controller ($controller_exec -k file://Sender.ior)\n"; +$CTRL = $tg_executor->CreateProcess ("$controller_exec", "-k file://Sender.ior"); +$result = $CTRL->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($result != 0) { + print STDERR "ERROR: The controller returned $result\n"; + $status = 1; +} + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); + +$pl_status = $E->SpawnWaitKill ($tg_executor->ProcessStartWaitInterval ()); + +if ($pl_status != 0) { + print STDERR "ERROR: dance_plan_launcher returned $pl_status\n"; + kill_open_processes (); + exit 1; +} + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/CIAO/examples/Hello_Event/descriptors/shs.ciao.localityconfig b/CIAO/examples/Hello_Event/descriptors/shs.ciao.localityconfig new file mode 100644 index 00000000000..76ef7856a63 --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/shs.ciao.localityconfig @@ -0,0 +1,9 @@ +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Container_Handler +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Home_Handler +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Component_Handler +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Homed_Component_Handler +edu.vanderbilt.dre.DAnCE.DeploymentInterceptor CIAO_Deployment_Interceptors create_CIAO_StoreReferences +edu.vanderbilt.dre.DAnCE.DeploymentInterceptor DAnCE_Error_Interceptors create_DAnCE_Standard_Error +edu.vanderbilt.dre.DAnCE.DeploymentInterceptor DAnCE_SHS_Interceptors create_DAnCE_SHS_Interceptor + + diff --git a/CIAO/examples/Hello_Event/descriptors/shs.localityconfig b/CIAO/examples/Hello_Event/descriptors/shs.localityconfig new file mode 100644 index 00000000000..dd6ba826aba --- /dev/null +++ b/CIAO/examples/Hello_Event/descriptors/shs.localityconfig @@ -0,0 +1,7 @@ +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Container_Handler +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Home_Handler +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Component_Handler +edu.vanderbilt.dre.DAnCE.InstanceHandler CIAO_Deployment_Handlers create_Homed_Component_Handler +edu.vanderbilt.dre.DAnCE.DeploymentInterceptor CIAO_Deployment_Interceptors create_CIAO_StoreReferences +edu.vanderbilt.dre.DAnCE.DeploymentInterceptor DAnCE_SHS_Interceptors create_DAnCE_SHS_Interceptor +edu.vanderbilt.dre.DAnCE.DeploymentInterceptor DAnCE_Error_Interceptors create_DAnCE_Standard_Error diff --git a/CIAO/examples/Hello_Event/step-by-step.html b/CIAO/examples/Hello_Event/step-by-step.html new file mode 100644 index 00000000000..6b939601d79 --- /dev/null +++ b/CIAO/examples/Hello_Event/step-by-step.html @@ -0,0 +1,317 @@ +<!--//$Id$ --> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> + <title>Step-By-Step of How to build a CIAO application</title> +</head> + +<body + text = "#000000" + link = "#000fff" + vLink= "#ff0f0f" + aLink = "#0000ff" + bgColor = "#ffffff"> + +<hr> +<h2>Simple <a href="http://www.dre.vanderbilt.edu/CIAO">CIAO</a> tutorial</h2> +<b>Note:</b> +<ul> + <li><a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a> tools are not used in this tutorial.</li> + <li>This is only a <em>GENERAL</em> way of building up a CIAO application and deploying it with DAnCE. + The user could always change the process in his own way. For example: the IDL file content, the project structure etc. + </li> + <li>An CCM application may consist of several components, deployed on several (hardware) nodes, which work + together as one big application. + </li> + <li>To download the code of this example please refer to the SVN repository at <code>$CIAO_ROOT/examples/Hello</code>.</li> +</ul> +<hr> + +<h2>Example Description</h2> +This Hello example is contructed in the following ways: +<ol> + <li>There are 2 components in the application: Sender and Receiver</li> + <li>The Sender will send out the timeout event to the Receiver.</li> + <li>Upon receiving the timeout event, the Receiver will go and fetch data from the Sender. </li> + <li>The user could deploy multiple instances of the Receiver without changing any C++/idl source code.</li> +</ol> + +<hr> + +<h2>Code generation</h2> +Note that an user only need to write the IDL files. All the rest of the files can be generated. +The following code generators are used throughout this example: +<ul> + <li><code>$CIAO_ROOT/bin/generate_component_mpc.pl</code><br/> + This perl script is able to generate MPC files out of a single name. + <a href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">MPC</a> is a utility we use + to generate makefiles or VC project/solution files for all + <a href="http://www.cs.wustl.edu/~schmidt/ACE.html">ACE</a>, + <a href="http://www.cs.wustl.edu/~schmidt/TAO.html">TAO</a> and + <a href="http://www.cs.wustl.edu/~schmidt/CIAO.html">CIAO</a> + libraries and executables.<br/> + </li> + <li><code>$ACE_ROOT/bin/tao_idl</code> + Besides all the stub and skeleton code, the TAO IDL compiler is also suitable to generate the + so called executor files. An executor C++ code file contains the business logic + the user need to write. Since this should be deployable by the DAnCE framework, there're + some restriction to this code. The TAO IDL compiler takes care of that. + </li> + <li><code>$ACE_ROOT/bin/mwc.pl</code> + This script will generate VS solutions and/or GNU makefiles out of the generated + MPC files. + </li> +</ul> +All these generators will be handled throughout this tutorial. +<br/><br/> +If there's a ccm_noevent entry in your default.features (location +<code>$ACE_ROOT/bin/MakeProjectCreator/config/</code>), make sure it's set to 0 (nil)! + +<hr> + +<h2>Step-By-Step</h2> +<h3>Hello_Base</h3> + +<ol> + <li>Write an IDL file (<a href="./Hello_Base/Hello_Base.idl"><code>Hello_Base.idl</code></a>) which contains all + the interfaces and events common to all the components. The reason + we do this is because the generated lib of this idl file will be + linked in by all the components in the application. To reduce the size + of the component lib we have to include only the necesary part. In + this example, we have an eventtype <code>timeout</code> and an + interface <code>ReadMessage</code>, which are used by both the + Sender and the Receiver, so we put both of them in <a href="Hello_Base/Hello_Base.idl">Hello_Base.idl</a>. + </li> + <br/> + <li>Look at the <a href="Hello_Base/Hello_Base.mpc"><code>Hello_Base.mpc</code></a> file to get an idea how the Hello_Base_stub + and Hello_Base_svnt projects are organized.<br/> + There's a utility in $CIAO_ROOT/bin, called generate_component_mpc. This a perl script which is able to generate a complete + mpc file based on a given name. The commandline used to generate <code>Hello_Base.mpc</code> is:<br/> + <code>$CIAO_ROOT/bin/generate_component_mpc.pl -e -n -l../lib -o../lib Hello_Base</code><br/> + Use <code>$CIAO_ROOT/bin/generate_component_mpc.pl --help</code> to get more information about this tool. + See also the <a href="../../tutorials/Quoter/Simple/01.html">Quoter tutorial</a> for more information. + </li> +</ol> + +<hr> + +<h3>For Every Component</h3> + +<ol> + <li>Execute : <br> + <ul> + <li><code>$CIAO_ROOT/bin/generate_component_mpc.pl -e -l ../lib -o ../lib -c starter -p Hello_Base Sender</code> in Sender directory. + The <code>-c</code> option will be handled <a href="#entry_point">later</a> on in the step-by-step. + </li> + <li><code>$CIAO_ROOT/bin/generate_component_mpc.pl -e -l ../lib -o ../lib -p Hello_Base Receiver</code> in Receiver directory + </li> + </ul> + <b>Note:</b> + <ul> + <li>There're different directories for <code>"Hello_Base", "Sender", "Receiver"</code> respectively. + </li> + <li>All output DLL's/executable will be stored in a separate directory, called "lib". + </li> + </ul> + + <br/> + + <li>Write an IDL file for every component (<a href="Sender/Sender.idl"><code>Sender.idl</code></a> and + <a href="Receiver/Receiver.idl"><code>Receiver.idl</code></a>). <br> Here you can put the + component specific IDL definitions in this file. In this example we have a interface <code>trigger</code> + specific to the Sender. Please note that the Sender component + <code>"supports"</code> (IDL keyword) this interface. This interface can be used by + <a href="Sender/starter.cpp"><code>starter</code></a> (an IDL 2 client) to start the application. + </li> + + <br/> + + <li>There's a possibility that the TAO IDL compiler can generate a 'template' + for the executor code (=business logic). + Steps to generate the executor files: + <ol> + <li>Backup the following files to a temporary directory:<br/> + <ul> + <li>Sender/Sender_exec.cpp + </li> + <li>Sender/Sender_exec.h + </li> + <li>Receiver/Receiver_exec.cpp + </li> + <li>Receiver/Receiver_exec.h + </li> + </ul> + </li> + <li>Add -Gex to the <code>idlflags</code> entry in the + IDL generator projects in the MPC file, meaning + </li> + <ul> + <li>Project <code>Hello_Base_Sender_idl_gen</code> in Sender/Sender.mpc + </li> + <li>Project <code>Hello_Base_Receiver_idl_gen</code> in Receiver/Receiver.mpc + </li> + </ul> + <li>Generate GNUmakefiles / VS project files and build + </li> + <li>Remove -Gex(r) again + </li> + <li>Generate GNUmakefiles / VS project files (and build) + </li> + </ol> + <b>Mind the last step! The TAO IDL compiler does not check whether the + executor file already exists. It will overwrite the existing!</b><br/><br/> + After step 2 the following files should be overwritten: + <ul> + <li>Sender/Sender_exec.cpp + </li> + <li>Sender/Sender_exec.h + </li> + <li>Receiver/Receiver_exec.cpp + </li> + <li>Receiver/Receiver_exec.h + </li> + </ul> + </li> +</ol> + +Performing all steps could be troublesome to a new CCM user. The +best way of learning this is to just do it more than once. I'll also help to +read the example source code. If you are familliar with CORBA programming, +it should not take too much time before you can declare yourself as a CCM programmer.<br/> + +<hr> + +<a name="entry_point"><h3>The Entry Point</h3></a> + +After both components are implemented we still need a small program to +initialize the process. In Sender.idl there is a Sender specific +interface with a single method in it created for this purpose. Hence +there is a CORBA client application called <code>starter</code>. The +<code>starter</code> will make a invocation on a supported interface +called <code>trigger</code> on the Sender component to get the whole +distributed application started. The <code>starter</code> will first +obtain the Sender component object reference through the ior string +supplied as a command argument. Please see the the last part of +<code>Sender/Sender.mpc</code> file for details. <br/> + +<hr> + +<h3>Build</h3> + +This example assumes that ACE/TAO/CIAO/DANCE is build. If not, please +follow the instructions to build these frameworks.<br/> +<b>Tip : </b>Experienced users may want to use <code>$CIAO_ROOT/CIAO_TAO_DAnCE.mwc</code> +to generate the needed VC project/solutions or GNU make files.<br/> + +Perform the following steps to build this example: <br/> +<ol> + <li>Navigate to <code>$CIAO_ROOT/examples/Hello</code> + </li> + <li>For windows:<br/> + <ul> + <li>Visual C++ 2005: execute <code>$ACE_ROOT/bin/mwc.pl -type vc8</code> + </li> + <li>Visual C++ 2008: execute <code>$ACE_ROOT/bin/mwc.pl -type vc9</code> + </li> + <li>Visual C++ 2010: execute <code>$ACE_ROOT/bin/mwc.pl -type vc10</code> + </li> + </ul> + </li> + <li>For linux:<br/> + Execute <code>$ACE_ROOT/bin/mwc.pl -type gnuace</code>. + </li> +</ol> +Build this example using Visual Studio or make.<br/> + +<hr> + +<h3>Assemble</h3> + +Now we can step forward to build the assembly. Here we are going to +build the simplest case only, which is 1 Receiver and 1 Sender. If you +are interested in CIAO you could try 1 Sender with multiple +Receivers. However, you need to change the Sender.idl to make it +<em>publishes</em> timeout event instead of <em>emits</em> event.<br> +Note: Creating the deployment plan descriptor is a tedious and error-prone job, +you can download <a href="http://www.dre.vanderbilt.edu/cosmic">CoSMIC</a> to +assist you in this step. +<br/><br/> +You need to create an XML descriptor file to describe your <em>deployment plan</em>, +which is defined in a <em>Deployment Plan Descriptor</em> (.cdp) +(see <a href="./descriptors/DeploymentPlan.cdp">Hello deployment plan<a>). +In this file, you need to declaratively specify how the component assembly is +constructed. Specificly, you need to specify the component types, component instances, +component connections, implementation artifact descriptions, and whether you +want to register component instances with naming service. +<br/><br/> + +<hr> + +<h3>Deploy with <A href="../../docs/releasenotes/dance.html">DAnCE</A></h3> +Once the DeploymentPlan is ready, the apllication can be deployed, using the newly +created Deployment Plan. +<br/><br/> + +Next figure shows how DAnCE will handle the deployment plan.<br/> + +<img width="70%" height="80%" src="./dance_deployment_runtime.png" /> +<br/><br/> + +To deploy the application, we're using perl scripts to launch the executables +of which DAnCE consist. +A perl script typically launches the DAnCE executables in this order: +<ol> + <li>Naming service (if needed). + </li> + <li>A DAnCE Node Manager for each node. + </li> + <li>The DAnCE Execution Manager. + </li> + <li>The DAnCE Plan Launcher. + </li> +</ol> + +See <a href=./descriptors/run_test.pl">run_test.pl</a> for an example. + +<br><br> + +The two most important variations: +<ol> + <li>Deploying the application, using the naming service. See + <a href=./descriptors/run_test.pl">run_test.pl</a>. + </li> + <li>Deploying the application, without the use of the naming service. See + <a href=./descriptors/run_test_without_ns.pl">run_test_without_ns.pl</a> + </li> +</ol> +When using the first option, one will need to write a cdd-file. This file dictates +which nodes are available in the system and which CORBA IIOP is necessary to +contact these. Click <a href="./descriptors/NodeManagerMap.cdd">here</a> for +an example of a CDD file. + + +<hr> +<h3>More Features</h3> +<ul> + <li>Running the components in the same process: + see <a href="./descriptors/PlanLocality_SameProcess.cdp">PlanLocality_SameProcess.cdp</a> + at the end of this file. + </li> + <li>Running the components in the different process: + see <a href="./descriptors/PlanLocality_DifferentProcesses.cdp">PlanLocality_DifferentProcesses.cdp</a> + at the end of this file. + </li> + <li>Using the Health and Status interceptors. + see <a href="./descriptors/run_test_shs.pl">run_test_shs.pl</a>, + <a href="./descriptors/shs.ciao.localityconfig">shs.ciao.localityconfig</a>, and + <a href="./descriptors/shs.localityconfig">shs.localityconfig</a>. + </li> +</ul> + +<br><br> + +<hr> +<b>Email: </b><a href="mailto:"</a<ADDRESS>ciao-users@list.isis.vanderbilt.edu</ADDRESS> +</body> +</html> + |