diff options
Diffstat (limited to 'CIAO/tests/DAnCE/PartialShutdown/Component3')
4 files changed, 820 insertions, 0 deletions
diff --git a/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3.idl b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3.idl new file mode 100644 index 00000000000..1edc514d783 --- /dev/null +++ b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3.idl @@ -0,0 +1,29 @@ +// $Id$ + +/** + * @file Component3.idl + * @author Marcel Smit <msmit@remedy.nl> + */ + +#ifndef COMPONENT3_IDL_ +#define COMPONENT3_IDL_ + +#include "Base/PartialShutdown.idl" + +module PartialShutdown +{ + component Component3 + { + uses Writer write_to_comp_1; + uses Writer write_to_comp_2; + + uses Reader read_from_comp_1; + uses Reader read_from_comp_2; + + provides Writer comp_3_writer; + + provides Reader comp_3_reader; + }; +}; + +#endif /* COMPONENT3_IDL_ */ diff --git a/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3.mpc b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3.mpc new file mode 100755 index 00000000000..4d765df747f --- /dev/null +++ b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3.mpc @@ -0,0 +1,149 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p PartialShutdown Component3" + +project(PartialShutdown_Component3_idl_gen) : componentidldefaults { + custom_only = 1 + idlflags += -Wb,stub_export_macro=COMPONENT3_STUB_Export \ + -Wb,stub_export_include=Component3_stub_export.h \ + -Wb,skel_export_macro=COMPONENT3_SVNT_Export \ + -Wb,skel_export_include=Component3_svnt_export.h \ + -Wb,exec_export_macro=COMPONENT3_EXEC_Export \ + -Wb,exec_export_include=Component3_exec_export.h \ + -Gxhex -Gxhsk -Gxhst -I.. + + IDL_Files { + Component3.idl + } +} + +project(PartialShutdown_Component3_lem_gen) : ciaoidldefaults { + after += PartialShutdown_Component3_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=COMPONENT3_LEM_STUB_Export \ + -Wb,stub_export_include=Component3_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Component3E.idl + } +} + +project(PartialShutdown_Component3_lem_stub) : ccm_svnt { + after += PartialShutdown_Component3_lem_gen PartialShutdown_Component3_stub PartialShutdown_stub + libs += PartialShutdown_stub Component3_stub + + libout = ../lib + libpaths += ../lib + + includes += .. + + sharedname = Component3_lem_stub + dynamicflags += COMPONENT3_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Component3EC.cpp + } + + Header_Files { + Component3EC.h + Component3_lem_stub_export.h + } + + Inline_Files { + Component3EC.inl + } +} + +project(PartialShutdown_Component3_stub) : ccm_stub { + after += PartialShutdown_Component3_idl_gen PartialShutdown_stub + libs += PartialShutdown_stub + + includes += .. + + libout = ../lib + libpaths += ../lib + + sharedname = Component3_stub + dynamicflags += COMPONENT3_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Component3C.cpp + } + + Header_Files { + Component3C.h + Component3_stub_export.h + } + + Inline_Files { + Component3C.inl + } +} + +project(PartialShutdown_Component3_exec) : ciao_executor { + after += PartialShutdown_Component3_lem_stub PartialShutdown_Component3_stub + sharedname = Component3_exec + libs += Component3_stub Component3_lem_stub PartialShutdown_stub + + includes += .. + + libout = ../lib + libpaths += ../lib + + dynamicflags += COMPONENT3_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Component3_exec.cpp + } + + Header_Files { + Component3_exec.h + Component3_exec_export.h + } + + Inline_Files { + } +} + + +project(PartialShutdown_Component3_svnt) : ciao_servant { + after += PartialShutdown_Component3_lem_stub + sharedname = Component3_svnt + libs += Component3_stub Component3_lem_stub PartialShutdown_stub + + includes += .. + + libout = ../lib + libpaths += ../lib + + dynamicflags += COMPONENT3_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Component3S.cpp + Component3_svnt.cpp + } + + Header_Files { + Component3S.h + Component3_svnt.h + Component3_svnt_export.h + } + + Inline_Files { + Component3S.inl + } +} + + diff --git a/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3_exec.cpp b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3_exec.cpp new file mode 100644 index 00000000000..9b62382a25a --- /dev/null +++ b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3_exec.cpp @@ -0,0 +1,432 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v2.0.0 + * 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 "Component3_exec.h" +#include "tao/ORB_Core.h" +#include "ace/Reactor.h" + +namespace CIAO_PartialShutdown_Component3_Impl +{ + + /** + * WriteTicker + */ + + WriteTicker::WriteTicker (Component3_exec_i &callback) + : callback_ (callback) + { + } + + int + WriteTicker::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->callback_.write_all (); + return 0; + } + + /** + * ReadTicker + */ + + ReadTicker::ReadTicker (Component3_exec_i &callback) + : callback_ (callback) + { + } + + int + ReadTicker::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->callback_.read_all (); + return 0; + } + + /** + * Facet Executor Implementation Class: comp_3_writer_exec_i + */ + + comp_3_writer_exec_i::comp_3_writer_exec_i ( + ::PartialShutdown::CCM_Component3_Context_ptr ctx, + Component3_exec_i & callback) + : ciao_context_ ( + ::PartialShutdown::CCM_Component3_Context::_duplicate (ctx)) + , callback_ (callback) + { + } + + comp_3_writer_exec_i::~comp_3_writer_exec_i (void) + { + } + + // Operations from ::PartialShutdown::Writer + + void + comp_3_writer_exec_i::write_line (const char * line) + { + this->callback_.write_line (line); + } + + /** + * Facet Executor Implementation Class: comp_3_reader_exec_i + */ + + comp_3_reader_exec_i::comp_3_reader_exec_i ( + ::PartialShutdown::CCM_Component3_Context_ptr ctx, + Component3_exec_i & callback) + : ciao_context_ ( + ::PartialShutdown::CCM_Component3_Context::_duplicate (ctx)) + , callback_ (callback) + { + } + + comp_3_reader_exec_i::~comp_3_reader_exec_i (void) + { + } + + // Operations from ::PartialShutdown::Reader + + ::CORBA::StringSeq * + comp_3_reader_exec_i::read_lines (void) + { + return this->callback_.read_lines (); + } + + /** + * Component Executor Implementation Class: Component3_exec_i + */ + + Component3_exec_i::Component3_exec_i (void) + { + ACE_NEW_THROW_EX (this->write_ticker_, + WriteTicker (*this), + ::CORBA::NO_MEMORY ()); + ACE_NEW_THROW_EX (this->read_ticker_, + ReadTicker (*this), + ::CORBA::NO_MEMORY ()); + } + + Component3_exec_i::~Component3_exec_i (void) + { + delete this->write_ticker_; + delete this->read_ticker_; + if (!::CORBA::is_nil (this->ciao_context_.in ())) + { + PartialShutdown::Reader_var read_from_comp_1 = + this->ciao_context_->get_connection_read_from_comp_1 (); + if (!::CORBA::is_nil (read_from_comp_1.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::~Component3_exec_i - " + "ERROR: Read interface of component 1 still valid\n")); + } + else + { + ACE_DEBUG ((LM_DEBUG, "Component3_exec_i::~Component3_exec_i - " + "OK: Read interface of component 1 is not valid\n")); + } + PartialShutdown::Reader_var read_from_comp_2 = + this->ciao_context_->get_connection_read_from_comp_2 (); + if (!::CORBA::is_nil (read_from_comp_2.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::~Component3_exec_i - " + "ERROR: Read interface of component 2 still valid\n")); + } + else + { + ACE_DEBUG ((LM_DEBUG, "Component3_exec_i::~Component3_exec_i - " + "OK: Read interface of component 2 is not valid\n")); + } + + PartialShutdown::Writer_var writer_to_comp_1 = + this->ciao_context_->get_connection_write_to_comp_1 (); + if (!::CORBA::is_nil (writer_to_comp_1.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::~Component3_exec_i - " + "ERROR: Write interface of component 1 still valid\n")); + } + else + { + ACE_DEBUG ((LM_DEBUG, "Component3_exec_i::~Component3_exec_i - " + "OK: Write interface of component 1 is not valid\n")); + } + + PartialShutdown::Writer_var writer_to_comp_2 = + this->ciao_context_->get_connection_write_to_comp_2 (); + if (!::CORBA::is_nil (writer_to_comp_2.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::~Component3_exec_i - " + "ERROR: Write interface of component 2 still valid\n")); + } + else + { + ACE_DEBUG ((LM_DEBUG, "Component3_exec_i::~Component3_exec_i - " + "OK: Write interface of component 2 is not valid\n")); + } + } + } + + // Supported operations and attributes. + ACE_Reactor* + Component3_exec_i::reactor (void) + { + ACE_Reactor* reactor = 0; + ::CORBA::Object_var ccm_object = + this->ciao_context_->get_CCM_object(); + if (! ::CORBA::is_nil (ccm_object.in ())) + { + ::CORBA::ORB_var orb = ccm_object->_get_orb (); + if (! ::CORBA::is_nil (orb.in ())) + { + reactor = orb->orb_core ()->reactor (); + } + } + if (reactor == 0) + { + throw ::CORBA::INTERNAL (); + } + return reactor; + } + + void Component3_exec_i::read_all (void) + { + PartialShutdown::Reader_var read_from_comp_1 = + this->ciao_context_->get_connection_read_from_comp_1 (); + if (::CORBA::is_nil (read_from_comp_1.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::read_all - " + "ERROR: Reader of component 1 seems NIL\n")); + } + else + { + ::CORBA::StringSeq_var strings_from_1 = + read_from_comp_1->read_lines (); + for (::CORBA::ULong i = 0; i < strings_from_1->length (); ++i) + { + ACE_DEBUG ((LM_DEBUG, "COMPONENT3: READ FROM COMPONENT1 : %C\n", + strings_from_1[i].in ())); + } + } + + PartialShutdown::Reader_var read_from_comp_2 = + this->ciao_context_->get_connection_read_from_comp_2 (); + if (::CORBA::is_nil (read_from_comp_2.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::read_all - " + "ERROR: Reader of component 2 seems NIL\n")); + } + else + { + ::CORBA::StringSeq_var strings_from_2 = + read_from_comp_2->read_lines (); + for (::CORBA::ULong i = 0; i < strings_from_2->length (); ++i) + { + ACE_DEBUG ((LM_DEBUG, "COMPONENT3: READ FROM COMPONENT2 : %C\n", + strings_from_2[i].in ())); + } + } + } + + void Component3_exec_i::write_all (void) + { + const char * str_to_comp_1 = "FROM COMPONENT3 TO COMPONENT1"; + const char * str_to_comp_2 = "FROM COMPONENT3 TO COMPONENT2"; + + PartialShutdown::Writer_var writer_to_comp_1 = + this->ciao_context_->get_connection_write_to_comp_1 (); + if (::CORBA::is_nil (writer_to_comp_1.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::write_all - " + "ERROR: Writer to component 1 seems NIL\n")); + } + else + { + writer_to_comp_1->write_line (str_to_comp_1); + } + + PartialShutdown::Writer_var writer_to_comp_2 = + this->ciao_context_->get_connection_write_to_comp_2 (); + + if (::CORBA::is_nil (writer_to_comp_2.in ())) + { + ACE_ERROR ((LM_ERROR, "Component3_exec_i::write_all - " + "ERROR: Writer to component 2 seems NIL\n")); + } + else + { + writer_to_comp_2->write_line (str_to_comp_2); + } + } + + void + Component3_exec_i::write_line (const char* line) + { + ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, + this->mutex_, CORBA::INTERNAL ()); + { + ACE_DEBUG ((LM_DEBUG, "Component3_exec_i::write_line - " + "New line: <%C>\n", + line)); + this->strings_.push_back (line); + } + } + + + ::CORBA::StringSeq * + Component3_exec_i::read_lines (void) + { + CORBA::StringSeq *args = 0; + ACE_NEW_THROW_EX (args, + CORBA::StringSeq, + CORBA::NO_MEMORY ()); + + CORBA::StringSeq_var safe_args (args); + + // Copy the argument vector to the string sequence. + + args->length (this->strings_.size ()); + for (::CORBA::ULong i = 0; i < this->strings_.size (); ++i) + { + (*args)[i] = CORBA::string_dup (this->strings_[i]); + } + + return safe_args._retn (); + } + + // Component attributes and port operations. + + ::PartialShutdown::CCM_Writer_ptr + Component3_exec_i::get_comp_3_writer (void) + { + if ( ::CORBA::is_nil (this->ciao_comp_3_writer_.in ())) + { + comp_3_writer_exec_i *tmp = 0; + ACE_NEW_RETURN ( + tmp, + comp_3_writer_exec_i ( + this->ciao_context_.in (), + *this), + ::PartialShutdown::CCM_Writer::_nil ()); + + this->ciao_comp_3_writer_ = tmp; + } + + return + ::PartialShutdown::CCM_Writer::_duplicate ( + this->ciao_comp_3_writer_.in ()); + } + + ::PartialShutdown::CCM_Reader_ptr + Component3_exec_i::get_comp_3_reader (void) + { + if ( ::CORBA::is_nil (this->ciao_comp_3_reader_.in ())) + { + comp_3_reader_exec_i *tmp = 0; + ACE_NEW_RETURN ( + tmp, + comp_3_reader_exec_i ( + this->ciao_context_.in (), + *this), + ::PartialShutdown::CCM_Reader::_nil ()); + + this->ciao_comp_3_reader_ = tmp; + } + + return + ::PartialShutdown::CCM_Reader::_duplicate ( + this->ciao_comp_3_reader_.in ()); + } + + // Operations from Components::SessionComponent. + + void + Component3_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->ciao_context_ = + ::PartialShutdown::CCM_Component3_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->ciao_context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Component3_exec_i::configuration_complete (void) + { + /* Your code here. */ + } + + void + Component3_exec_i::ccm_activate (void) + { + if (this->reactor ()->schedule_timer ( + this->write_ticker_, + 0, + ACE_Time_Value (5, 0), + ACE_Time_Value (1, 0)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling write ticker\n"))); + } + if (this->reactor ()->schedule_timer ( + this->read_ticker_, + 0, + ACE_Time_Value (5, 0), + ACE_Time_Value (1, 0)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling read ticker\n"))); + } + } + + void + Component3_exec_i::ccm_passivate (void) + { + this->reactor ()->cancel_timer (this->write_ticker_); + this->reactor ()->cancel_timer (this->read_ticker_); + } + + void + Component3_exec_i::ccm_remove (void) + { + /* Your code here. */ + } + + extern "C" COMPONENT3_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PartialShutdown_Component3_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Component3_exec_i); + + return retval; + } +} diff --git a/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3_exec.h b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3_exec.h new file mode 100644 index 00000000000..b243f0ec5f6 --- /dev/null +++ b/CIAO/tests/DAnCE/PartialShutdown/Component3/Component3_exec.h @@ -0,0 +1,210 @@ +// -*- C++ -*- +// $Id$ + +/** + * Code generated by the The ACE ORB (TAO) IDL Compiler v2.0.0 + * 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_COMPONENT3_EXEC_UTY3AH_H_ +#define CIAO_COMPONENT3_EXEC_UTY3AH_H_ + +#include /**/ "ace/pre.h" + +#include "Component3EC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include /**/ "Component3_exec_export.h" +#include "tao/LocalObject.h" + +#include <vector> + +namespace CIAO_PartialShutdown_Component3_Impl +{ + class Component3_exec_i; + + /** + * WriteTicker + */ + + class WriteTicker : + public ACE_Event_Handler + { + public: + WriteTicker (Component3_exec_i &callback); + int handle_timeout (const ACE_Time_Value &, const void *); + private: + /// Maintains a handle that actually process the event + Component3_exec_i &callback_; + }; + + /** + * ReadTicker + */ + + class ReadTicker : + public ACE_Event_Handler + { + public: + ReadTicker (Component3_exec_i &callback); + int handle_timeout (const ACE_Time_Value &, const void *); + private: + /// Maintains a handle that actually process the event + Component3_exec_i &callback_; + }; + + + /** + * Provider Executor Implementation Class: comp_3_writer_exec_i + */ + + class comp_3_writer_exec_i + : public virtual ::PartialShutdown::CCM_Writer, + public virtual ::CORBA::LocalObject + { + public: + comp_3_writer_exec_i ( + ::PartialShutdown::CCM_Component3_Context_ptr ctx, + Component3_exec_i & callback); + virtual ~comp_3_writer_exec_i (void); + + //@{ + /** Operations and attributes from PartialShutdown::Writer. */ + + virtual + void write_line (const char * line); + //@} + + private: + ::PartialShutdown::CCM_Component3_Context_var ciao_context_; + Component3_exec_i & callback_; + }; + + /** + * Provider Executor Implementation Class: comp_3_reader_exec_i + */ + + class comp_3_reader_exec_i + : public virtual ::PartialShutdown::CCM_Reader, + public virtual ::CORBA::LocalObject + { + public: + comp_3_reader_exec_i ( + ::PartialShutdown::CCM_Component3_Context_ptr ctx, + Component3_exec_i & callback); + virtual ~comp_3_reader_exec_i (void); + + //@{ + /** Operations and attributes from PartialShutdown::Reader. */ + + virtual + ::CORBA::StringSeq * read_lines (void); + //@} + + private: + ::PartialShutdown::CCM_Component3_Context_var ciao_context_; + Component3_exec_i & callback_; + }; + + /** + * Component Executor Implementation Class: Component3_exec_i + */ + + class Component3_exec_i + : public virtual Component3_Exec, + public virtual ::CORBA::LocalObject + { + public: + Component3_exec_i (void); + virtual ~Component3_exec_i (void); + + //@{ + /** Supported operations and attributes. */ + + //@} + + //@{ + /** Component attributes and port operations. */ + + virtual ::PartialShutdown::CCM_Writer_ptr + get_comp_3_writer (void); + + virtual ::PartialShutdown::CCM_Reader_ptr + get_comp_3_reader (void); + //@} + + //@{ + /** 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); + //@} + + //@{ + /** User defined public operations. */ + void read_all (void); + void write_all (void); + + void write_line (const char * line); + ::CORBA::StringSeq * read_lines (void); + + //@} + + private: + ::PartialShutdown::CCM_Component3_Context_var ciao_context_; + + //@{ + /** Component attributes. */ + ::PartialShutdown::CCM_Writer_var ciao_comp_3_writer_; + ::PartialShutdown::CCM_Reader_var ciao_comp_3_reader_; + //@} + + //@{ + /** User defined members. */ + WriteTicker * write_ticker_; + ReadTicker * read_ticker_; + TAO_SYNCH_MUTEX mutex_; + typedef std::vector <const char *> Strings; + Strings strings_; + + //@} + + //@{ + /** User defined private operations. */ + + //@} + + /// Get the ACE_Reactor + ACE_Reactor* reactor (void); + }; + + extern "C" COMPONENT3_EXEC_Export ::Components::EnterpriseComponent_ptr + create_PartialShutdown_Component3_Impl (void); +} + +#include /**/ "ace/post.h" + +#endif /* ifndef */ |