summaryrefslogtreecommitdiff
path: root/TAO/CIAO/examples
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/examples')
-rw-r--r--TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.idl26
-rw-r--r--TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc66
-rw-r--r--TAO/CIAO/examples/Hello/Receiver/Receiver.idl30
-rw-r--r--TAO/CIAO/examples/Hello/Receiver/Receiver.mpc109
-rw-r--r--TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp352
-rw-r--r--TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h273
-rw-r--r--TAO/CIAO/examples/Hello/Sender/Sender.mpc131
-rw-r--r--TAO/CIAO/examples/Hello/step-by-step.html156
-rw-r--r--TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc68
-rw-r--r--TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp198
-rw-r--r--TAO/CIAO/examples/OEP/BasicSP/BMDevice/BMDevice.mpc76
-rw-r--r--TAO/CIAO/examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc68
-rw-r--r--TAO/CIAO/examples/OEP/BasicSP/EC/EC.mpc101
-rw-r--r--TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.cpp300
-rw-r--r--TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.h190
-rw-r--r--TAO/CIAO/examples/OEP/Display/GPS/GPS.mpc92
-rw-r--r--TAO/CIAO/examples/OEP/Display/NavDisplay/NavDisplay.mpc68
-rw-r--r--TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp165
-rw-r--r--TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc44
-rw-r--r--TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp208
-rw-r--r--TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/README15
-rw-r--r--TAO/CIAO/examples/OEP/Display/RateGen/RateGen.mpc99
-rw-r--r--TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.cpp341
-rw-r--r--TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.h187
-rw-r--r--TAO/CIAO/examples/OEP/Display/descriptors/NOTE-win.txt91
-rw-r--r--TAO/CIAO/examples/OEP/Display/descriptors/NOTE.txt140
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc66
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc67
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc65
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC/BasicSP.mpc35
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC/EC/EC.mpc75
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc66
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc67
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc65
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC2/BasicSP.mpc35
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC2/EC/EC.mpc98
-rw-r--r--TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc67
37 files changed, 4300 insertions, 0 deletions
diff --git a/TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.idl b/TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.idl
new file mode 100644
index 00000000000..d82a23b6c8d
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.idl
@@ -0,0 +1,26 @@
+//$Id$:
+/**
+ * @file Hello_Base.idl
+ * Definition of common interfaces used by the Hello example
+ *
+ * @auther Tao Lu <lu@dre.vanderbilt.edu>
+ */
+
+#ifndef HELLO_IDL
+#define HELLO_IDL
+
+#include <Components.idl>
+
+module Hello
+{
+ interface message
+ {
+ string get_message ();
+ };
+
+ eventtype timeout
+ {
+ };
+};
+
+#endif /* HELLO_IDL */
diff --git a/TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc b/TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc
new file mode 100644
index 00000000000..76832e2de5b
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Hello_Base/Hello_Base.mpc
@@ -0,0 +1,66 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n Hello_Base"
+
+project(Hello_Base_stub): ciao_client {
+
+ sharedname = Hello_Base_stub
+ idlflags += -Sc \
+ -Wb,stub_export_macro=HELLO_BASE_STUB_Export \
+ -Wb,stub_export_include=Hello_Base_stub_export.h \
+ -Wb,skel_export_macro=HELLO_BASE_SVNT_Export \
+ -Wb,skel_export_include=Hello_Base_svnt_export.h
+ dynamicflags = HELLO_BASE_STUB_BUILD_DLL
+
+ IDL_Files {
+ Hello_Base.idl
+ }
+
+ Source_Files {
+ Hello_BaseC.cpp
+ }
+
+ Header_Files {
+ Hello_BaseC.h
+ Hello_Base_stub_export.h
+ }
+
+ Inline_Files {
+ Hello_BaseC.inl
+ }
+
+ Template_Files {
+ }
+}
+
+project(Hello_Base_svnt) : ciao_server {
+ after += Hello_Base_stub
+ sharedname = Hello_Base_svnt
+ libs += Hello_Base_stub
+
+ idlflags += -Sc \
+ -Wb,stub_export_macro=HELLO_BASE_STUB_Export \
+ -Wb,stub_export_include=Hello_Base_stub_export.h \
+ -Wb,skel_export_macro=HELLO_BASE_SVNT_Export \
+ -Wb,skel_export_include=Hello_Base_svnt_export.h
+ dynamicflags = HELLO_BASE_SVNT_BUILD_DLL
+
+ IDL_Files {
+ Hello_Base.idl
+ }
+
+ Source_Files {
+ Hello_BaseS.cpp
+ }
+
+ Header_Files {
+ Hello_BaseS.h
+ Hello_Base_svnt_export.h
+ }
+
+ Inline_Files {
+ Hello_BaseS.inl
+ }
+
+ Template_Files {
+ }
+}
diff --git a/TAO/CIAO/examples/Hello/Receiver/Receiver.idl b/TAO/CIAO/examples/Hello/Receiver/Receiver.idl
new file mode 100644
index 00000000000..e5e1e02607a
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Receiver/Receiver.idl
@@ -0,0 +1,30 @@
+//$Id$:
+/**
+ * @file Receiver.idl
+ *
+ * @author Tao Lu <lu@dre.vanderbilt.edu>
+ */
+
+#ifndef RECEIVER_IDL
+#define RECEIVER_IDL
+
+#include "../Hello_Base/Hello_Base.idl"
+
+module Hello
+{
+ component Receiver
+ {
+ uses message read_message;
+
+ // Not use in test, just used to test 'uses multiple'.
+ uses multiple message gather_messages;
+
+ consumes timeout click_in;
+ };
+
+ home ReceiverHome manages Receiver
+ {
+ };
+
+};
+#endif /*RECEIVER_IDL*/
diff --git a/TAO/CIAO/examples/Hello/Receiver/Receiver.mpc b/TAO/CIAO/examples/Hello/Receiver/Receiver.mpc
new file mode 100644
index 00000000000..f347716ac40
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Receiver/Receiver.mpc
@@ -0,0 +1,109 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Hello_Base Receiver"
+
+project(Hello_Base_Receiver_stub): ciao_client {
+ after += Hello_Base_stub
+ sharedname = Receiver_stub
+ idlflags += -Sc \
+ -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
+ dynamicflags = RECEIVER_STUB_BUILD_DLL
+ libs += Hello_Base_stub
+
+ IDL_Files {
+ Receiver.idl
+ }
+
+ Source_Files {
+ ReceiverC.cpp
+ }
+
+ Header_Files {
+ ReceiverC.h
+ Receiver_stub_export.h
+ }
+
+ Inline_Files {
+ ReceiverC.inl
+ }
+
+ Template_Files {
+ }
+}
+
+project(Hello_Base_Receiver_svnt) : ciao_servant {
+ after += Hello_Base_svnt \
+ Hello_Base_Receiver_stub
+ sharedname = Receiver_svnt
+ libs += Receiver_stub \
+ Hello_Base_stub \
+ Hello_Base_svnt
+
+ idlflags += -Sc \
+ -Wb,export_macro=RECEIVER_SVNT_Export \
+ -Wb,export_include=Receiver_svnt_export.h
+ dynamicflags = RECEIVER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Receiver.cidl
+ }
+
+ IDL_Files {
+ ReceiverE.idl
+ }
+
+ Source_Files {
+ ReceiverEC.cpp
+ ReceiverS.cpp
+ Receiver_svnt.cpp
+ }
+
+ Header_Files {
+ ReceiverEC.h
+ ReceiverS.h
+ Receiver_svnt.h
+ Receiver_svnt_export.h
+ }
+
+ Inline_Files {
+ ReceiverEC.inl
+ ReceiverS.inl
+ }
+
+ Template_Files {
+ }
+}
+
+
+project(Hello_Base_Receiver_exec) : ciao_component {
+ after += Hello_Base_Receiver_svnt
+ sharedname = Receiver_exec
+ libs += Receiver_stub \
+ Receiver_svnt \
+ Hello_Base_stub \
+ Hello_Base_svnt
+
+ idlflags += -Wb,export_macro=RECEIVER_EXEC_Export \
+ -Wb,export_include=Receiver_exec_export.h
+ dynamicflags = RECEIVER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Receiver_exec.cpp
+ }
+
+ Header_Files {
+ Receiver_exec.h
+ Receiver_exec_export.h
+ }
+
+ Inline_Files {
+ }
+
+ Template_Files {
+ }
+}
diff --git a/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp
new file mode 100644
index 00000000000..aa2c2b8081c
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.cpp
@@ -0,0 +1,352 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#include "Sender_svnt.h"
+#include "Cookies.h"
+#include "ciao/Servant_Activator.h"
+#include "ciao/Port_Activator_T.h"
+
+namespace Sender_Impl
+{
+ namespace CIAO_GLUE_Hello
+ {
+ Sender_Context::Sender_Context (
+ ::Components::CCMHome_ptr home,
+ ::CIAO::Swapping_Container *c,
+ Sender_Servant *sv)
+ : Context_Impl_Base (home, c),
+ ctx_svnt_base (home, c, sv)
+ {
+ }
+
+ Sender_Context::~Sender_Context (void)
+ {
+ }
+
+ // Operations for Sender receptacles and event sources,
+ // defined in ::Hello::CCM_Sender_Context.
+
+ // CIAO-specific.
+
+ Sender_Context *
+ Sender_Context::_narrow (
+ ::Components::SessionContext_ptr p
+ ACE_ENV_ARG_DECL_NOT_USED)
+ {
+ return dynamic_cast<Sender_Context *> (p);
+ }
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ Sender_Servant::Sender_Servant (
+ ::Hello::CCM_Sender_ptr exe,
+ ::Components::CCMHome_ptr h,
+ ::CIAO::Swapping_Container *c)
+ : Servant_Impl_Base (c),
+ comp_svnt_base (exe, c)
+ {
+ this->context_ = new Sender_Context (h, c, this);
+
+ ACE_TRY_NEW_ENV
+ {
+ ::Components::SessionComponent_var scom =
+ ::Components::SessionComponent::_narrow (
+ exe
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (! ::CORBA::is_nil (scom.in ()))
+ {
+ scom->set_session_context (
+ this->context_
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+
+ this->populate_port_tables (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+
+ ACE_CATCHANY
+ {
+ }
+
+ ACE_ENDTRY;
+ }
+
+ Sender_Servant::~Sender_Servant (void)
+ {
+ }
+
+ void
+ Sender_Servant::set_attributes (
+ const ::Components::ConfigValues &descr
+ ACE_ENV_ARG_DECL_NOT_USED)
+ {
+ for (CORBA::ULong i = 0;
+ i < descr.length ();
+ ++i)
+ {
+ const char *descr_name = descr[i]->name ();
+ ::CORBA::Any &descr_value = descr[i]->value ();
+
+ if (ACE_OS::strcmp (descr_name, "local_message") == 0)
+ {
+ const char * _ciao_extract_val = 0;
+ descr_value >>= _ciao_extract_val;
+ this->local_message (_ciao_extract_val);
+ continue;
+ }
+
+ ACE_UNUSED_ARG (descr_name);
+ ACE_UNUSED_ARG (descr_value);
+ }
+ }
+
+ ::Components::Cookie *
+ Sender_Servant::connect (
+ const char *name,
+ ::CORBA::Object_ptr connection
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::AlreadyConnected,
+ ::Components::ExceededConnectionLimit))
+ {
+ // If the component has no receptacles, this will be unused.
+ ACE_UNUSED_ARG (connection);
+
+ if (name == 0)
+ {
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ CORBA::Object_ptr
+ Sender_Servant::disconnect (
+ const char *name,
+ ::Components::Cookie * ck
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::CookieRequired,
+ ::Components::NoConnection))
+ {
+ if (name == 0)
+ {
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::CORBA::Object::_nil ());
+ }
+
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::CORBA::Object::_nil ());
+
+ ACE_UNUSED_ARG (ck);
+ }
+
+ void
+ Sender_Servant::connect_consumer (
+ const char * emitter_name,
+ ::Components::EventConsumerBase_ptr consumer
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::AlreadyConnected,
+ ::Components::InvalidConnection))
+ {
+ if (emitter_name == 0)
+ {
+ ACE_THROW (::CORBA::BAD_PARAM ());
+ }
+
+ ACE_UNUSED_ARG (consumer);
+ ACE_THROW (::Components::InvalidName ());
+ }
+
+ ::Components::Cookie *
+ Sender_Servant::subscribe (
+ const char *publisher_name,
+ ::Components::EventConsumerBase_ptr subscribe
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::ExceededConnectionLimit))
+ {
+ // Just in case there are no if blocks
+ ACE_UNUSED_ARG (subscribe);
+
+ if (publisher_name == 0)
+ {
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ ACE_THROW_RETURN (::Components::InvalidName (), 0);
+ }
+
+ ::Components::EventConsumerBase_ptr
+ Sender_Servant::unsubscribe (
+ const char *publisher_name,
+ ::Components::Cookie *ck
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection))
+ {
+ // Just in case there are no if blocks
+ ACE_UNUSED_ARG (ck);
+
+ if (publisher_name == 0)
+ {
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::Components::EventConsumerBase::_nil ());
+ }
+
+ ACE_THROW_RETURN (
+ ::Components::InvalidName (),
+ ::Components::EventConsumerBase::_nil ());
+ }
+
+ CORBA::Object_ptr
+ Sender_Servant::get_facet_executor (const char *name
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException))
+ {
+ if (name == 0)
+ {
+ ACE_THROW_RETURN (
+ ::CORBA::BAD_PARAM (),
+ ::CORBA::Object::_nil ());
+ }
+
+ return CORBA::Object::_nil ();
+ }
+
+ // Supported operations.
+
+ void
+ Sender_Servant::start (
+ ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->executor_->start (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+
+ // Component attribute operations.
+
+ char *
+ Sender_Servant::local_message (
+ ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->executor_->local_message (
+ ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
+
+ void
+ Sender_Servant::local_message (
+ const char * local_message
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->executor_->local_message (
+ local_message
+ ACE_ENV_ARG_PARAMETER);
+ }
+
+ // Private method to populate the port tables.
+ void
+ Sender_Servant::populate_port_tables (
+ ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ::CORBA::Object_var obj_var;
+ ::Components::EventConsumerBase_var ecb_var;
+ }
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ SenderHome_Servant::SenderHome_Servant (
+ ::Hello::CCM_SenderHome_ptr exe,
+ ::CIAO::Swapping_Container *c)
+ : Swapping_Servant_Impl_Base (c),
+ home_svnt_base (exe, c)
+ {
+ }
+
+ SenderHome_Servant::~SenderHome_Servant (void)
+ {
+ }
+
+ // Home operations.
+
+ // Home supported interface operations.
+
+ // Home factory and finder operations.
+
+ // Home attribute operations.
+ }
+
+ extern "C" SENDER_SVNT_Export ::PortableServer::Servant
+ createSenderHome_Servant (
+ ::Components::HomeExecutorBase_ptr p,
+ CIAO::Swapping_Container *c
+ ACE_ENV_ARG_DECL)
+ {
+ if (p == 0)
+ {
+ return 0;
+ }
+
+ ::Hello::CCM_SenderHome_var x =
+ ::Hello::CCM_SenderHome::_narrow (
+ p
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ if (::CORBA::is_nil (x.in ()))
+ {
+ return 0;
+ }
+
+ return new
+ CIAO_GLUE_Hello::SenderHome_Servant (
+ x.in (),
+ c);
+ }
+}
+
diff --git a/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h
new file mode 100644
index 00000000000..2b836472b87
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Sender/New_Sender_svnt.h
@@ -0,0 +1,273 @@
+// $Id$
+//
+// **** Code generated by the ****
+// **** Component Integrated ACE ORB (CIAO) CIDL Compiler ****
+// CIAO has been developed by:
+// Center for Distributed Object Computing
+// Washington University
+// St. Louis, MO
+// USA
+// http://www.cs.wustl.edu/~schmidt/doc-center.html
+// CIDL Compiler has been developed by:
+// Institute for Software Integrated Systems
+// Vanderbilt University
+// Nashville, TN
+// USA
+// http://www.isis.vanderbilt.edu/
+//
+// Information about CIAO is available at:
+// http://www.dre.vanderbilt.edu/CIAO
+
+#ifndef CIAO_GLUE_SESSION_SENDER_SVNT_H
+#define CIAO_GLUE_SESSION_SENDER_SVNT_H
+
+#include /**/ "ace/pre.h"
+
+#include "SenderEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ciao/Container_Base.h"
+#include "ciao/Swapping_Container.h"
+#include "ciao/Servant_Impl_T.h"
+#include "ciao/Context_Impl_T.h"
+#include "ciao/Home_Servant_Impl_T.h"
+#include "ciao/Swapping_Servant_Impl_T.h"
+#include "ace/Active_Map_Manager_T.h"
+
+#include "SenderS.h"
+
+namespace Sender_Impl
+{
+ namespace CIAO_GLUE_Hello
+ {
+ class Sender_Servant;
+
+ class SENDER_SVNT_Export Sender_Context
+ : public virtual CIAO::Context_Impl<
+ ::Hello::CCM_Sender_Context,
+ Sender_Servant,
+ ::Hello::Sender,
+ ::Hello::Sender_var
+ >
+ {
+ public:
+ // We will allow the servant glue code we generate to access our state.
+ friend class Sender_Servant;
+
+ /// Hack for VC6.
+ typedef CIAO::Context_Impl<
+ ::Hello::CCM_Sender_Context,
+ Sender_Servant,
+ ::Hello::Sender,
+ ::Hello::Sender_var
+ > ctx_svnt_base;
+
+ Sender_Context (
+ ::Components::CCMHome_ptr home,
+ ::CIAO::Swapping_Container *c,
+ Sender_Servant *sv);
+
+ virtual ~Sender_Context (void);
+
+ // Operations for Sender receptacles and event sources,
+ // defined in ::Hello::CCM_Sender_Context.
+
+ // CIAO-specific.
+
+ static Sender_Context *
+ _narrow (
+ ::Components::SessionContext_ptr p
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+
+ protected:
+ // Methods that manage this component's connections and consumers.
+
+ protected:
+ };
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ class SENDER_SVNT_Export Sender_Servant
+ : public virtual CIAO::Servant_Impl<
+ POA_Hello::Sender,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Context
+ >
+ {
+ public:
+ /// Hack for VC6.
+ typedef CIAO::Servant_Impl<
+ POA_Hello::Sender,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Context
+ > comp_svnt_base;
+
+ Sender_Servant (
+ ::Hello::CCM_Sender_ptr executor,
+ ::Components::CCMHome_ptr home,
+ ::CIAO::Swapping_Container *c);
+
+ virtual ~Sender_Servant (void);
+
+ virtual void
+ set_attributes (
+ const ::Components::ConfigValues &descr
+ ACE_ENV_ARG_DECL);
+
+ // Supported operations.
+
+ virtual void
+ start (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Public port operations.
+
+ // Component attribute operations.
+
+ virtual char *
+ local_message (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ local_message (
+ const char *
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations for Receptacles interface.
+
+ virtual ::Components::Cookie *
+ connect (
+ const char *name,
+ CORBA::Object_ptr connection
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::AlreadyConnected,
+ ::Components::ExceededConnectionLimit));
+
+ virtual CORBA::Object_ptr
+ disconnect (
+ const char *name,
+ ::Components::Cookie *ck
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::CookieRequired,
+ ::Components::NoConnection));
+
+ // Operations for Events interface.
+
+ virtual ::Components::Cookie *
+ subscribe (
+ const char *publisher_name,
+ ::Components::EventConsumerBase_ptr subscriber
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection,
+ ::Components::ExceededConnectionLimit));
+
+ virtual ::Components::EventConsumerBase_ptr
+ unsubscribe (
+ const char *publisher_name,
+ ::Components::Cookie *ck
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::InvalidConnection));
+
+ virtual void
+ connect_consumer (
+ const char *emitter_name,
+ ::Components::EventConsumerBase_ptr consumer
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::InvalidName,
+ ::Components::AlreadyConnected,
+ ::Components::InvalidConnection));
+
+ // CIAO specific operations on the servant
+ CORBA::Object_ptr
+ get_facet_executor (const char *name
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException));
+
+ private:
+
+ private:
+
+ void
+ populate_port_tables (
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ };
+ }
+
+ namespace CIAO_GLUE_Hello
+ {
+ class SENDER_SVNT_Export SenderHome_Servant
+ : public virtual CIAO::Swapping_Servant_Impl<
+ POA_Hello::SenderHome,
+ ::Hello::CCM_SenderHome,
+ ::Hello::CCM_SenderHome_var,
+ ::Hello::Sender,
+ ::Hello::Sender_var,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Servant
+ >
+ {
+ public:
+ /// Hack for VC6.
+ typedef CIAO::Swapping_Servant_Impl<
+ POA_Hello::SenderHome,
+ ::Hello::CCM_SenderHome,
+ ::Hello::CCM_SenderHome_var,
+ ::Hello::Sender,
+ ::Hello::Sender_var,
+ ::Hello::CCM_Sender,
+ ::Hello::CCM_Sender_var,
+ Sender_Servant
+ > home_svnt_base;
+
+ SenderHome_Servant (
+ ::Hello::CCM_SenderHome_ptr exe,
+ ::CIAO::Swapping_Container *c);
+
+ virtual ~SenderHome_Servant (void);
+
+ // Home operations.
+
+ // Home factory and finder operations.
+
+ // Attribute operations.
+ };
+
+ extern "C" SENDER_SVNT_Export ::PortableServer::Servant
+ createSenderHome_Servant (
+ ::Components::HomeExecutorBase_ptr p,
+ CIAO::Swapping_Container *c
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS);
+ }
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_GLUE_SESSION_SENDER_SVNT_H */
+
diff --git a/TAO/CIAO/examples/Hello/Sender/Sender.mpc b/TAO/CIAO/examples/Hello/Sender/Sender.mpc
new file mode 100644
index 00000000000..d9cacb770a9
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/Sender/Sender.mpc
@@ -0,0 +1,131 @@
+// $Id$
+// This file is generated with "generate_component_mpc_extra.pl -p Hello_Base Sender"
+
+project(Hello_Base_Sender_stub): ciao_client {
+ after += Hello_Base_stub
+ sharedname = Sender_stub
+ idlflags += -Sc \
+ -Wb,stub_export_macro=SENDER_STUB_Export \
+ -Wb,stub_export_include=Sender_stub_export.h \
+ -Wb,skel_export_macro=SENDER_SVNT_Export \
+ -Wb,skel_export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_STUB_BUILD_DLL
+ libs += Hello_Base_stub
+
+ IDL_Files {
+ Sender.idl
+ }
+
+ Source_Files {
+ SenderC.cpp
+ }
+
+ Header_Files {
+ SenderC.h
+ Sender_stub_export.h
+ }
+
+ Inline_Files {
+ SenderC.inl
+ }
+
+ Template_Files {
+ }
+}
+
+project(Hello_Base_Sender_svnt) : ciao_servant {
+ after += Hello_Base_svnt Hello_Base_Sender_stub
+ sharedname = Sender_svnt
+ libs += Sender_stub \
+ Hello_Base_stub \
+ Hello_Base_svnt
+
+ idlflags += -Sc \
+ -Wb,export_macro=SENDER_SVNT_Export \
+ -Wb,export_include=Sender_svnt_export.h
+ dynamicflags = SENDER_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Sender.cidl
+ }
+
+ IDL_Files {
+ SenderE.idl
+ }
+
+ Source_Files {
+ SenderEC.cpp
+ SenderS.cpp
+ Sender_svnt.cpp
+ }
+
+ Header_Files {
+ SenderEC.h
+ SenderS.h
+ Sender_svnt.h
+ Sender_svnt_export.h
+ }
+
+ Inline_Files {
+ SenderEC.inl
+ SenderS.inl
+ }
+
+ Template_Files {
+ }
+}
+
+project(Hello_Base_Sender_exec) : ciao_component {
+ after += Hello_Base_Sender_svnt
+ sharedname = Sender_exec
+ libs += Sender_stub \
+ Sender_svnt \
+ Hello_Base_stub \
+ Hello_Base_svnt
+
+ idlflags += -Sc \
+ -Wb,export_macro=SENDER_EXEC_Export \
+ -Wb,export_include=Sender_exec_export.h
+ dynamicflags = SENDER_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Sender_exec.cpp
+ }
+
+ Header_Files {
+ Sender_exec.h
+ Sender_exec_export.h
+ }
+
+ Inline_Files {
+ }
+
+ Template_Files {
+ }
+}
+
+project (Hello_Starter) : ciao_client, valuetype {
+ exename = starter
+ after += Hello_Base_Sender_stub
+ libs += Sender_stub \
+ Hello_Base_stub
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ starter.cpp
+ }
+
+ Header_Files {
+ }
+
+ Inline_Files {
+ }
+
+ Template_Files {
+ }
+}
diff --git a/TAO/CIAO/examples/Hello/step-by-step.html b/TAO/CIAO/examples/Hello/step-by-step.html
new file mode 100644
index 00000000000..24560995648
--- /dev/null
+++ b/TAO/CIAO/examples/Hello/step-by-step.html
@@ -0,0 +1,156 @@
+<!--//$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>
+<hr>
+<b>Note:</b>
+<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. The user could always change the process in his own way. For example: the IDL file content, the project structure etc.</li>
+<li>To download the code please refer to the CVS repository at <code>$CIAO_ROOT/examples/Hello</code>.</li>
+<li>If you just want to try the example you could jump to the <em>Make</em> then the <em>Run</em> section.</li>
+<hr>
+
+<h2>Example Description</h2>
+This Hello example is contructed in the following ways:
+<li>1. There are 2 components in the system: Sender and Receiver</li>
+<li>2. The Sender will send out the timeout event to the Receiver.</li>
+<li>3. Upon receiving the timeout event, the Receiver will go and fetch data from the Sender. </li>
+<li>4. The user could deploy multiple instances of the Receiver without changing any C++/idl source code.</li>
+<hr>
+
+<h2>Step-By-Step</h2>
+<hr>
+<ul><h3>Hello_Base</h3>
+<li>1. Write an IDL file (<code>Hello_Base.idl</code>) which contains all the interfaces and events common to all the components. The reason we do this is becuse the generated lib of this idl file will be linked in by all the components in the system. 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 Hello.idl.</li>
+
+<li>2. Look at the <code>Hello_Base.mpc</code> file to get an idea how the Hello_Base_stub and Hello_Base_svnt projects are organized. <a href="http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf">MPC</a> is a utility we used 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.</li>
+</ul>
+
+<hr>
+
+<ul><h3>For Every Components</h3>
+
+<li>1. Use: <br>
+<ul>
+<code>$CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Sender <br>
+ $$CIAO_ROOT/bin/generate_component_mpc.pl -p Hello_Base Receiver
+</code><br></ul>
+Note:
+<ul>
+<li>I have different directories for <code>"Hello_Base", "Sender", "Receiver"</code> respectively.</li>
+
+<li>For every <code>_stub</code> project, add:<br>
+ <code>"libs += Hello_Base_stub"</code><br>
+
+</ul>
+
+<li>2. Use the export script to generate the export files. (3 files per component).</li>
+
+<li>3. Write an idl file for every compoent. 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. </li>
+
+<li>4. Write the CIDL file for every component.</li>
+
+<li>5. Write <code>_exec.h</code> and <code>_exec.cpp</code> files which actually implement the component.</li>
+<br>
+<br>
+Writing all those files could be troublesome to a new CCM user. The best way of learning this is 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.
+
+<hr>
+
+<h3>The Entry Point</h3>
+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 the Sender component object reference through the ior string. Please see the the last part of <code>Hello/Sender/Sender.mpc</code> file for details.
+
+<hr>
+
+<h3>Make</h3>
+<li>Go to the directory <code>$CIAO_ROOT/examples/Hello</code> and do:<br>
+ <code>$ACE_ROOT/bin/mwc.pl</code> (use -type option if you are using a compiler/IDE other than gnuace -which by default generates GNU makefiles)</li>
+ <br>For example, using <code>$ACE_ROOT/bin/mwc.pl -type vc71</code> if you are using Visual C++ 7.1 IDE.</li>
+<li>Look at the generated Makefile(*unx) , Solution/workspace files(Windows) and you got it.</li>
+
+<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 Receiver. However, you need to change the Sender.idl to make it <em>publishes</em> timeout event instead of <em>emits</em> event.
+
+<br>
+<br>
+
+<li>1. Make a new directory with name <em>descriptors</em> in your workspace</li>
+<li>2. Construct the <em>CIAO_Installation_Data.ini</em> file. You can use <code>uuidgen</code> to generate the UUIDs</li>
+
+<li>3. For every component generate the <em>.csd</em> and <em>.ssd</em> files. Follow the example carefully and make sure that you use the right UUIDs</li>
+
+<li>4. Write the <em>.cad</em> file which describes the assembly. You can choose to use <a href="http://www.dre.vanderbilt.edu/~lu/CADML">CADML</a> to generate the file.
+<br>
+Note: Please pay attention to the inter-relationship among different files, especially the relationship between the <em>.cad</em> file and <em>idl</em> file.
+</li>
+
+<hr>
+<h3>Run</h3>
+Finally you are ready to test the application you have made.
+<br><br>
+1. Run the example with a single CIAO_Daemon
+<ul>
+In <code>./descriptors</code> directory: <code>./run_test_default.pl</code> dose the following for you.
+<li>1. <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:20000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+<li>2. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat</code></li>
+<li>3. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a default.cad</code></li>
+<li>4. <code>../Sender/starter</code> Note: you can repeat this step.</li>
+
+If you want to get debug information from the component server, please see run_test_debug.pl which adds debug flag while running the component server.
+</ul>
+<br>
+
+2. Run the example with 2 CIAO_Daemons but on the same machine.
+<ul>
+ In <code>./descriptors</code> directory: <code>./run_test_remote.pl</code> dose the following for you.
+ <li>1. <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:20000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ <li>2. <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:12000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ <li>3. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat</code></li>
+ <li>4. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a remote.cad</code></li>
+ <li>5. <code>../Sender/starter</code> Note: you can repeat this step.</li>
+</ul>
+
+
+<br>
+
+3. Run the example with 2 CIAO_Daemons on two different hosts.
+<ul>
+ In <code>./descriptors</code> directory:<br>
+ Here you have to open the <em>remote.dat</em> and fill in the right URL for your hosts. You can change the port number as well, of course you will have to use the corresponding right address in your -ORBEndpoint option in the following step1 and 2.
+
+ <li>1. On host "Default" <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://URL:20000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ <li>2. On host "Remote" <code>${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://URL:12000 -n ${CIAO_ROOT}/tools/ComponentServer/ComponentServer </code></li>
+ For step 3 and step4 it doesn't matter where they are executed.
+ <li>3. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat</code></li>
+ <li>4. <code>${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a remote.cad</code></li>
+ Step5 must be executed on the same host where the Sender is deployed. If you are using my <em>remote.cad</em> file then the host is the <code>Default</code> one.
+ <li>5. <code>../Sender/starter</code> Note: you can repeat this step.</li>
+</ul>
+
+<br>
+
+4. Run the example with 2 receivers deployed on the same ComponentServer.
+<ul>
+ In <code>./descriptors</code> directory: <code>./run_test_multirecv.pl</code>
+</ul>
+
+<hr>
+<b>Email: </b><a href="mailto:"</a<ADDRESS>ciao-users@cse.wustl.edu</ADDRESS>
+</body>
+</html>
+
diff --git a/TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc b/TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc
new file mode 100644
index 00000000000..3a34534e512
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED.mpc
@@ -0,0 +1,68 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p HUDisplay -i BMClosedED"
+// This file has been manually modified to add a second component implementation.
+
+project(BMClosedED_stub): ciao_client {
+ after += BasicSP_stub
+ sharedname = BMClosedED_stub
+
+ idlflags += -Wb,stub_export_macro=BMCLOSEDED_STUB_Export
+ idlflags += -Wb,stub_export_include=BMClosedED_stub_export.h
+ idlflags += -Wb,skel_export_macro=BMCLOSEDED_SVNT_Export
+ idlflags += -Wb,skel_export_include=BMClosedED_svnt_export.h
+
+ dynamicflags = BMCLOSEDED_STUB_BUILD_DLL
+
+ libs += BasicSP_stub
+
+ IDL_Files {
+ BMClosedED.idl
+ }
+
+ Source_Files {
+ BMClosedEDC.cpp
+ }
+}
+
+project(BMClosedED_svnt) : ciao_servant {
+ after += BasicSP_svnt BMClosedED_stub
+ sharedname = BMClosedED_svnt
+ libs += BMClosedED_stub BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMCLOSEDED_SVNT_Export -Wb,export_include=BMClosedED_svnt_export.h
+ dynamicflags = BMCLOSEDED_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMClosedED.cidl
+ }
+
+ IDL_Files {
+ BMClosedEDE.idl
+ }
+
+ Source_Files {
+ BMClosedEDEC.cpp
+ BMClosedEDS.cpp
+ BMClosedED_svnt.cpp
+ }
+}
+
+
+project(BMClosedED_exec) : ciao_component {
+ after += BMClosedED_svnt
+ sharedname = BMClosedED_exec
+ libs += BMClosedED_stub BMClosedED_svnt BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMCLOSEDED_EXEC_Export -Wb,export_include=BMClosedED_exec_export.h
+ dynamicflags = BMCLOSEDED_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMClosedEDEI.idl
+ }
+
+ Source_Files {
+ BMClosedEDEIC.cpp
+ BMClosedED_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp b/TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp
new file mode 100644
index 00000000000..a08164ffc10
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/BasicSP/BMClosedED/BMClosedED_exec.cpp
@@ -0,0 +1,198 @@
+// $Id$
+
+#include "ciao/CIAO_common.h"
+#include "BMClosedED_exec.h"
+
+#include "ace/OS_NS_string.h"
+
+#define DISPLACEMENT 256
+
+/// Default constructor.
+MyImpl::BMClosedED_exec_i::BMClosedED_exec_i ()
+{
+}
+
+/// Default destructor.
+MyImpl::BMClosedED_exec_i::~BMClosedED_exec_i ()
+{
+}
+
+// Operations from HUDisplay::BMClosedED
+
+BasicSP::CCM_ReadData_ptr
+MyImpl::BMClosedED_exec_i::get_dataout (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return BasicSP::CCM_ReadData::_duplicate (this);
+}
+
+void
+MyImpl::BMClosedED_exec_i::push_in_avail (BasicSP::DataAvailable *
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - Doing computations \n"));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - Doing data fetch \n"));
+ }
+
+ // Refresh position
+ BasicSP::ReadData_var dat
+ = this->context_->get_connection_datain (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (dat.in ()))
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - got nil from get_connection \n"));
+
+ ACE_THROW (CORBA::BAD_INV_ORDER ());
+ }
+
+ CORBA::String_var str =
+ dat->get_data (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "BMClosedED - Display data is [%s] \n",
+ str.in ()));
+ }
+
+ if (ACE_OS::strcmp (str, "BM DEVICE DATA") == 0)
+ {
+ this->str_ = CORBA::string_dup ("BM CLOSED ED DATA");
+ }
+
+ // Notify others.
+ BasicSP::DataAvailable_var event =
+ new OBV_BasicSP::DataAvailable;
+
+ this->context_->push_out_avail (event
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+}
+
+// Operations from HUDisplay::position
+
+char *
+MyImpl::BMClosedED_exec_i::get_data (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->str_.inout ());
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::BMClosedED_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::set_session_context\n"));
+ }
+
+ this->context_ =
+ BasicSP::CCM_BMClosedED_Context::_narrow (ctx
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ ACE_THROW (CORBA::INTERNAL ());
+ }
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::BMClosedED_exec_i::ciao_preactivate (
+ ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMClosedED_exec_i::ccm_activate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::ccm_activate\n"));
+ }
+}
+
+void
+MyImpl::BMClosedED_exec_i::ciao_postactivate (
+ ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::BMClosedED_exec_i::ccm_passivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ // if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::ccm_passivate\n"));
+}
+
+void
+MyImpl::BMClosedED_exec_i::ccm_remove (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ // if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::BMClosedED_exec_i::ccm_remove\n"));
+}
+
+/// Default ctor.
+MyImpl::BMClosedEDHome_exec_i::BMClosedEDHome_exec_i ()
+{
+}
+
+/// Default dtor.
+MyImpl::BMClosedEDHome_exec_i::~BMClosedEDHome_exec_i ()
+{
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::BMClosedEDHome_exec_i::create (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ Components::EnterpriseComponent_ptr tmp =
+ Components::EnterpriseComponent::_nil ();
+ ACE_NEW_THROW_EX (tmp,
+ MyImpl::BMClosedED_exec_i,
+ CORBA::NO_MEMORY ());
+ return tmp;
+}
+
+
+extern "C" BMCLOSEDED_EXEC_Export ::Components::HomeExecutorBase_ptr
+createBMClosedEDHome_Impl (void)
+{
+ return new MyImpl::BMClosedEDHome_exec_i;
+}
diff --git a/TAO/CIAO/examples/OEP/BasicSP/BMDevice/BMDevice.mpc b/TAO/CIAO/examples/OEP/BasicSP/BMDevice/BMDevice.mpc
new file mode 100644
index 00000000000..af2e66ae3a6
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/BasicSP/BMDevice/BMDevice.mpc
@@ -0,0 +1,76 @@
+// $Id$
+
+project(BMDevice_stub): ciao_client {
+ after += BasicSP_stub
+
+ sharedname = BMDevice_stub
+
+ libs += BasicSP_stub
+
+ idlflags += -Wb,stub_export_macro=BMDEVICE_STUB_Export
+ idlflags += -Wb,stub_export_include=BMDevice_stub_export.h
+ idlflags += -Wb,skel_export_macro=BMDEVICE_SVNT_Export
+ idlflags += -Wb,skel_export_include=BMDevice_svnt_export.h
+
+ libpaths += ..
+ libs += BasicSP_stub
+ dynamicflags = BMDEVICE_STUB_BUILD_DLL
+
+ IDL_Files {
+ BMDevice.idl
+ }
+
+ Source_Files {
+ BMDeviceC.cpp
+ }
+}
+
+project(BMDevice_svnt) : ciao_servant {
+ after += BMDevice_stub BasicSP_stub
+ sharedname = BMDevice_svnt
+
+ libs += BMDevice_stub BasicSP_stub BasicSP_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=BMDEVICE_SVNT_Export
+ idlflags += -Wb,export_include=BMDevice_svnt_export.h
+ dynamicflags = BMDEVICE_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDevice.cidl
+ }
+
+ IDL_Files {
+ BMDeviceE.idl
+ }
+
+ Source_Files {
+ BMDeviceEC.cpp
+ BMDeviceS.cpp
+ BMDevice_svnt.cpp
+ }
+}
+
+
+project(BMDevice_exec) : ciao_component {
+ after += BMDevice_svnt
+ sharedname = BMDevice_exec
+ libs += BMDevice_stub BMDevice_svnt BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMDEVICE_EXEC_Export
+ idlflags += -Wb,export_include=BMDevice_exec_export.h
+ dynamicflags = BMDEVICE_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDeviceEI.idl
+ }
+
+ Source_Files {
+ BMDeviceES.cpp
+ BMDeviceEIC.cpp
+ BMDeviceEIS.cpp
+ BMDevice_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc b/TAO/CIAO/examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc
new file mode 100644
index 00000000000..539650f007f
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/BasicSP/BMDisplay/BMDisplay.mpc
@@ -0,0 +1,68 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP -i BMDisplay"
+
+project(BMDisplay_stub): ciao_client {
+ after += BasicSP_stub
+
+ sharedname = BMDisplay_stub
+
+ idlflags += -Wb,stub_export_macro=BMDISPLAY_STUB_Export
+ idlflags += -Wb,stub_export_include=BMDisplay_stub_export.h
+ idlflags += -Wb,skel_export_macro=BMDISPLAY_SVNT_Export
+ idlflags += -Wb,skel_export_include=BMDisplay_svnt_export.h
+
+ libs += BasicSP_stub
+
+ dynamicflags = BMDISPLAY_STUB_BUILD_DLL
+
+ IDL_Files {
+ BMDisplay.idl
+ }
+
+ Source_Files {
+ BMDisplayC.cpp
+ }
+}
+
+project(BMDisplay_svnt) : ciao_servant {
+ after += BasicSP_svnt BMDisplay_stub
+ sharedname = BMDisplay_svnt
+ libs += BMDisplay_stub BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMDISPLAY_SVNT_Export -Wb,export_include=BMDisplay_svnt_export.h
+ dynamicflags = BMDISPLAY_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDisplay.cidl
+ }
+
+ IDL_Files {
+ BMDisplayE.idl
+ }
+
+ Source_Files {
+ BMDisplayEC.cpp
+ BMDisplayS.cpp
+ BMDisplay_svnt.cpp
+ }
+}
+
+
+project(BMDisplay_exec) : ciao_component {
+ after += BMDisplay_svnt
+ sharedname = BMDisplay_exec
+ libs += BMDisplay_stub BMDisplay_svnt BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=BMDISPLAY_EXEC_Export -Wb,export_include=BMDisplay_exec_export.h
+ dynamicflags = BMDISPLAY_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDisplayEI.idl
+ }
+
+ Source_Files {
+ BMDisplayEIC.cpp
+ BMDisplay_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/OEP/BasicSP/EC/EC.mpc b/TAO/CIAO/examples/OEP/BasicSP/EC/EC.mpc
new file mode 100644
index 00000000000..3544eac4714
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/BasicSP/EC/EC.mpc
@@ -0,0 +1,101 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP -i -c EC"
+
+project(EC_stub): ciao_client {
+ after += BasicSP_stub
+ sharedname = EC_stub
+
+ libs += BasicSP_stub
+
+ idlflags += -Wb,stub_export_macro=EC_STUB_Export
+ idlflags += -Wb,stub_export_include=EC_stub_export.h
+ idlflags += -Wb,skel_export_macro=EC_SVNT_Export
+ idlflags += -Wb,skel_export_include=EC_svnt_export.h
+
+ dynamicflags = EC_STUB_BUILD_DLL
+
+ IDL_Files {
+ EC.idl
+ }
+
+ Source_Files {
+ ECC.cpp
+ }
+}
+
+project(EC_svnt) : ciao_servant {
+ after += BasicSP_svnt EC_stub
+ sharedname = EC_svnt
+ libs += EC_stub BasicSP_stub BasicSP_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=EC_SVNT_Export
+ idlflags += -Wb,export_include=EC_svnt_export.h
+
+ dynamicflags = EC_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ EC.cidl
+ }
+
+ IDL_Files {
+ ECE.idl
+ }
+
+ Source_Files {
+ ECEC.cpp
+ ECS.cpp
+ EC_svnt.cpp
+ }
+}
+
+
+project(EC_exec) : ciao_component {
+ after += EC_svnt
+ sharedname = EC_exec
+ libs += EC_stub BasicSP_stub EC_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=EC_EXEC_Export
+ idlflags += -Wb,export_include=EC_exec_export.h
+ dynamicflags = EC_EXEC_BUILD_DLL
+
+ IDL_Files {
+ ECEI.idl
+ }
+
+ Source_Files {
+ ECEIC.cpp
+ EC_exec.cpp
+ }
+}
+
+
+
+project (EC_client) : ciao_client, valuetype {
+ exename = client
+ after += EC_stub
+ libs += EC_stub BasicSP_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+
+
+project (EC_controller) : ciao_client, valuetype {
+ exename = controller
+ after += EC_stub
+ libs += EC_stub BasicSP_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ controller.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.cpp b/TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.cpp
new file mode 100644
index 00000000000..d4930ceec3c
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.cpp
@@ -0,0 +1,300 @@
+// $Id$
+
+#include "EC_exec.h"
+#include "CIAO_common.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+
+//=================================================================
+
+MyImpl::timeout_Handler::timeout_Handler (MyImpl::EC_exec_i *cb)
+ : active_ (0),
+ done_ (0),
+ tid_ (0),
+ pulse_callback_ (cb)
+{
+ // Nothing
+ this->reactor (new ACE_Reactor);
+}
+
+MyImpl::timeout_Handler::~timeout_Handler ()
+{
+ delete this->reactor ();
+ this->reactor (0);
+}
+
+int
+MyImpl::timeout_Handler::open_h ()
+{
+ return this->activate ();
+}
+
+int
+MyImpl::timeout_Handler::close_h()
+{
+ this->done_ = 1;
+ this->reactor ()->notify ();
+
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "Waiting\n"));
+ return this->wait ();
+}
+
+int
+MyImpl::timeout_Handler::start (CORBA::Long hertz)
+{
+ if (hertz == 0 || this->active_ != 0) // Not valid
+ return -1;
+
+ long usec = 1000000 / hertz;
+
+ this->tid_ = this->reactor ()->schedule_timer (this,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec));
+
+ this->active_ = 1;
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::stop (void)
+{
+ if (this->active_ == 0) // Not valid.
+ return -1;
+
+ this->reactor ()->cancel_timer (this);
+
+ this->active_ = 0;
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::active (void)
+{
+ return this->active_;
+}
+
+int
+MyImpl::timeout_Handler::handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask)
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("[%x] handle = %d, close_mask = %d\n"),
+ this,
+ handle,
+ close_mask));
+
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::handle_timeout (const ACE_Time_Value &,
+ const void *)
+{
+ this->pulse_callback_->pulse ();
+
+// ACE_DEBUG ((LM_DEBUG,
+// ACE_TEXT ("[%x] with count #%05d timed out at %d.%d!\n"),
+// this,
+// tv.sec (),
+// tv.usec ()));
+
+ return 0;
+}
+
+int
+MyImpl::timeout_Handler::svc (void)
+{
+ this->reactor ()->owner (ACE_OS::thr_self ());
+
+ while (!this->done_)
+ this->reactor ()->handle_events ();
+
+ return 0;
+}
+
+//=================================================================
+
+MyImpl::EC_exec_i::EC_exec_i ()
+ : hertz_ (0),
+ pulser_ (this)
+{
+
+}
+
+MyImpl::EC_exec_i::EC_exec_i (CORBA::Long hz)
+ : hertz_ (hz),
+ pulser_ (this)
+{
+}
+
+MyImpl::EC_exec_i::~EC_exec_i ()
+{
+}
+
+CORBA::Long
+MyImpl::EC_exec_i::hertz (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->hertz_;
+}
+
+void
+MyImpl::EC_exec_i::hertz (CORBA::Long hertz
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->hertz_ = hertz;
+}
+
+// Operations from supported interface(s)
+
+void
+MyImpl::EC_exec_i::start (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->hertz_ == 0 || this->pulser_.active())
+ ACE_THROW (CORBA::BAD_INV_ORDER ());
+
+ // @@ Start the rate generator
+ this->pulser_.start (this->hertz_);
+}
+
+void
+MyImpl::EC_exec_i::stop (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (! this->pulser_.active ())
+ ACE_THROW (CORBA::BAD_INV_ORDER ());
+
+ // @@ stop the rate generator
+ this->pulser_.stop ();
+}
+
+CORBA::Boolean
+MyImpl::EC_exec_i::active (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->pulser_.active ();
+}
+
+// Operations from Components::SessionComponent
+
+void
+MyImpl::EC_exec_i::set_session_context (Components::SessionContext_ptr ctx
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::set_session_context\n"));
+
+ this->context_ =
+ BasicSP::CCM_EC_Context::_narrow (ctx
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (this->context_.in ()))
+ ACE_THROW (CORBA::INTERNAL ());
+ // Urm, we actually discard exceptions thown from this operation.
+
+}
+
+void
+MyImpl::EC_exec_i::ciao_preactivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::EC_exec_i::ccm_activate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::ccm_activate\n"));
+
+ this->pulser_.open_h ();
+}
+
+void
+MyImpl::EC_exec_i::ciao_postactivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::EC_exec_i::ccm_passivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::ccm_passivate\n"));
+ this->pulser_.close_h ();
+}
+
+void
+MyImpl::EC_exec_i::ccm_remove (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::EC_exec_i::ccm_remove\n"));
+}
+
+void
+MyImpl::EC_exec_i::pulse (void)
+{
+ ACE_TRY_NEW_ENV
+ {
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Pushing BasicSP::TimeOut event!\n")));
+
+ BasicSP::TimeOut_var ev = new OBV_BasicSP::TimeOut ();
+
+ this->context_->push_timeout (ev.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ // @@ do nothing?
+ }
+ ACE_ENDTRY;
+}
+
+MyImpl::ECHome_exec_i::ECHome_exec_i ()
+{
+}
+
+MyImpl::ECHome_exec_i::~ECHome_exec_i ()
+{
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::ECHome_exec_i::new_EC (CORBA::Long hertz
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return new MyImpl::EC_exec_i (hertz);
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::ECHome_exec_i::create (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::EC_exec_i ();
+}
+
+
+extern "C" EC_EXEC_Export ::Components::HomeExecutorBase_ptr
+createECHome_Impl (void)
+{
+ return new MyImpl::ECHome_exec_i ();
+}
diff --git a/TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.h b/TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.h
new file mode 100644
index 00000000000..057f8f70f14
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/BasicSP/EC/EC_exec.h
@@ -0,0 +1,190 @@
+// $Id$
+
+//============================================================
+/**
+ * @file EC_exec.h
+ *
+ * Header file for the actualy EC and ECHome component
+ * implementation.
+ *
+ * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
+ */
+//============================================================
+
+#ifndef EC_EXEC_H
+#define EC_EXEC_H
+
+#include "ECEIC.h"
+#include "tao/LocalObject.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+namespace MyImpl
+{
+ // Forward decl.
+ class EC_exec_i;
+
+ /**
+ * @brief Active pulse generater
+ */
+ class timeout_Handler : public ACE_Task_Base
+ {
+ public:
+ // Default constructor
+ timeout_Handler (EC_exec_i *cb);
+ ~timeout_Handler ();
+
+ int open_h (void);
+
+ int close_h (void);
+
+ int start (CORBA::Long hertz);
+
+ int stop (void);
+
+ int active (void);
+
+ // Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ // Called when <Time_Handler> is removed.
+ virtual int handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask);
+
+ virtual int svc (void);
+
+ private:
+ /// Tracking whether we are actively generating pulse or not.
+ long active_;
+
+ /// Flag to indicate completion of this active object.
+ int done_;
+
+ /// The timer id we are waiting.
+ int tid_;
+
+ EC_exec_i *pulse_callback_;
+
+ ACE_Thread_Manager thr_mgr_;
+ };
+
+ /**
+ * @class EC_exec_i
+ *
+ * EC executor implementation class.
+ */
+ class EC_EXEC_Export EC_exec_i :
+ public virtual BasicSP::EC_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ EC_exec_i ();
+
+ /// Initialize with a default frequency.
+ EC_exec_i (CORBA::Long hz);
+
+ /// Default destructor.
+ ~EC_exec_i ();
+
+ // Attribute operations.
+
+ virtual CORBA::Long hertz (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void hertz (CORBA::Long hertz
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from supported interface(s)
+
+ virtual void start (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void stop (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Boolean active (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void set_session_context (Components::SessionContext_ptr ctx
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+
+ virtual void ccm_passivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ /// Helper function to be called back by timeout_Handler
+ void pulse (void);
+
+ protected:
+ /// Frequency
+ CORBA::Long hertz_;
+
+ /// Copmponent specific context
+ BasicSP::CCM_EC_Context_var context_;
+
+ /// An active object that actually trigger the generation of
+ /// periodic events.
+ timeout_Handler pulser_;
+ };
+
+ /**
+ * @class ECHome_exec_i
+ *
+ * EC home executor implementation class.
+ */
+ class EC_EXEC_Export ECHome_exec_i :
+ public virtual BasicSP::CCM_ECHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ ECHome_exec_i ();
+
+ /// Default dtor.
+ ~ECHome_exec_i ();
+
+ // Explicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ new_EC (CORBA::Long hertz
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" EC_EXEC_Export ::Components::HomeExecutorBase_ptr
+createECHome_Impl (void);
+
+#endif /* CIAO_ECGEN_EXEC_H */
diff --git a/TAO/CIAO/examples/OEP/Display/GPS/GPS.mpc b/TAO/CIAO/examples/OEP/Display/GPS/GPS.mpc
new file mode 100644
index 00000000000..3b7a859de56
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/GPS/GPS.mpc
@@ -0,0 +1,92 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p HUDisplay -i GPS"
+// This file has been manually modified to add a second component implementation.
+
+project(GPS_stub): ciao_client {
+ after += HUDisplay_stub
+ sharedname = GPS_stub
+
+ libs += HUDisplay_stub
+
+ idlflags += -Wb,stub_export_macro=GPS_STUB_Export
+ idlflags += -Wb,stub_export_include=GPS_stub_export.h
+ idlflags += -Wb,skel_export_macro=GPS_SVNT_Export
+ idlflags += -Wb,skel_export_include=GPS_svnt_export.h
+
+ dynamicflags = GPS_STUB_BUILD_DLL
+
+ IDL_Files {
+ GPS.idl
+ }
+
+ Source_Files {
+ GPSC.cpp
+ }
+}
+
+project(GPS_svnt) : ciao_servant {
+ after += HUDisplay_svnt GPS_stub
+ sharedname = GPS_svnt
+
+ libs += GPS_stub HUDisplay_stub HUDisplay_svnt
+
+ libpaths += ..
+
+ idlflags += -Wb,export_macro=GPS_SVNT_Export
+ idlflags += -Wb,export_include=GPS_svnt_export.h
+
+ dynamicflags = GPS_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ GPS.cidl
+ }
+
+ IDL_Files {
+ GPSE.idl
+ }
+
+ Source_Files {
+ GPSEC.cpp
+ GPSS.cpp
+ GPS_svnt.cpp
+ }
+}
+
+
+project(GPS_exec) : ciao_component {
+ after += GPS_svnt
+ sharedname = GPS_exec
+ libs += GPS_stub GPS_svnt HUDisplay_stub HUDisplay_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=GPS_EXEC_Export
+ idlflags += -Wb,export_include=GPS_exec_export.h
+ dynamicflags = GPS_EXEC_BUILD_DLL
+
+ IDL_Files {
+ GPSEI.idl
+ }
+
+ Source_Files {
+ GPSEIC.cpp
+ GPS_exec.cpp
+ }
+}
+
+project(GPS_tracing_exec) : ciao_component {
+ after += GPS_svnt
+ sharedname = GPS_tracing_exec
+ libs += GPS_stub GPS_svnt HUDisplay_stub HUDisplay_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=GPS_EXEC_Export
+ idlflags += -Wb,export_include=GPS_exec_export.h
+ dynamicflags = GPS_EXEC_BUILD_DLL
+
+ IDL_Files {
+ GPSEI.idl
+ }
+
+ Source_Files {
+ GPSEIC.cpp
+ GPS_tracing_exec.cpp
+ }
+}
diff --git a/TAO/CIAO/examples/OEP/Display/NavDisplay/NavDisplay.mpc b/TAO/CIAO/examples/OEP/Display/NavDisplay/NavDisplay.mpc
new file mode 100644
index 00000000000..aa7d123f11d
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/NavDisplay/NavDisplay.mpc
@@ -0,0 +1,68 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p HUDisplay -i NavDisplay"
+
+project(NavDisplay_stub): ciao_client {
+ after += HUDisplay_stub
+ sharedname = NavDisplay_stub
+
+ libs += HUDisplay_stub
+
+ idlflags += -Wb,stub_export_macro=NAVDISPLAY_STUB_Export
+ idlflags += -Wb,stub_export_include=NavDisplay_stub_export.h
+ idlflags += -Wb,skel_export_macro=NAVDISPLAY_SVNT_Export
+ idlflags += -Wb,skel_export_include=NavDisplay_svnt_export.h
+
+ dynamicflags = NAVDISPLAY_STUB_BUILD_DLL
+
+ IDL_Files {
+ NavDisplay.idl
+ }
+
+ Source_Files {
+ NavDisplayC.cpp
+ }
+}
+
+project(NavDisplay_svnt) : ciao_servant {
+ after += HUDisplay_svnt NavDisplay_stub
+ sharedname = NavDisplay_svnt
+ libs += NavDisplay_stub HUDisplay_stub HUDisplay_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=NAVDISPLAY_SVNT_Export
+ idlflags += -Wb,export_include=NavDisplay_svnt_export.h
+ dynamicflags = NAVDISPLAY_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ NavDisplay.cidl
+ }
+
+ IDL_Files {
+ NavDisplayE.idl
+ }
+
+ Source_Files {
+ NavDisplayEC.cpp
+ NavDisplayS.cpp
+ NavDisplay_svnt.cpp
+ }
+}
+
+
+project(NavDisplay_exec) : ciao_component {
+ after += NavDisplay_svnt
+ sharedname = NavDisplay_exec
+ libs += NavDisplay_stub NavDisplay_svnt HUDisplay_stub HUDisplay_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=NAVDISPLAY_EXEC_Export
+ idlflags += -Wb,export_include=NavDisplay_exec_export.h
+ dynamicflags = NAVDISPLAY_EXEC_BUILD_DLL
+
+ IDL_Files {
+ NavDisplayEI.idl
+ }
+
+ Source_Files {
+ NavDisplayEIC.cpp
+ NavDisplay_exec.cpp
+ }
+}
diff --git a/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp
new file mode 100644
index 00000000000..95125600100
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/DetailView.cpp
@@ -0,0 +1,165 @@
+// $Id$
+
+#include "DetailView.h"
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qtabwidget.h>
+#include <qtable.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qspinbox.h>
+
+
+DetailView::DetailView(QWidget *parent, const char *name)
+: QWidget(parent, name), current_unit(NULL)
+{
+ QGridLayout *grid = new QGridLayout(this, 8, 10);
+
+ // Create a label containing a QMovie
+ separatorlabel = new QLabel(this, "label0" );
+
+ grid->addMultiCellWidget(separatorlabel, 0, 0, 0, 9);
+
+ QLabel *sem_id_label = new QLabel("FDN:", this);
+ grid->addWidget(sem_id_label, 1, 0);
+ sem_id_val = new QLineEdit(this);
+ sem_id_val->setReadOnly(1);
+ grid->addMultiCellWidget(sem_id_val, 1, 1, 1, 7);
+
+ QLabel *descr_label = new QLabel("Description:", this);
+ grid->addWidget(descr_label, 2, 0);
+ descr_edit = new QLineEdit(this);
+ grid->addMultiCellWidget(descr_edit, 2, 2, 1, 7);
+
+ QLabel *x_label = new QLabel("X coordinate:", this);
+ grid->addWidget(x_label, 3, 0);
+ x_edit = new QSpinBox(this);
+ x_edit->setMinValue(0);
+ x_edit->setMaxValue(65535);
+ grid->addWidget(x_edit, 3, 1);
+
+ QLabel *y_label = new QLabel("Y coordinate:", this);
+ grid->addWidget(y_label, 3, 3);
+ y_edit = new QSpinBox(this);
+ y_edit->setMinValue(0);
+ y_edit->setMaxValue(65535);
+ grid->addWidget(y_edit, 3, 4);
+
+ QLabel *z_label = new QLabel("Z coordinate:", this);
+ grid->addWidget(z_label, 3, 6);
+ z_edit = new QSpinBox(this);
+ z_edit->setMinValue(0);
+ z_edit->setMaxValue(65535);
+ grid->addWidget(z_edit, 3, 7);
+
+ // Create a label containing a QMovie
+ QString path_to_movie;
+ char *ace_root = getenv("ACE_ROOT");
+ if(ace_root)
+ {
+ path_to_movie += ace_root;
+ path_to_movie += "/TAO/CIAO/examples/handcrafted/Display/NavDisplayGUI_exec/trolltech.gif";
+ }
+ else
+ {
+ path_to_movie = "../NavDisplayGUI_exec/trolltech.gif";
+ }
+ movie = QMovie(path_to_movie);
+ movielabel = new QLabel(this, "label1" );
+ movie.connectStatus(this, SLOT(movieStatus(int)));
+ movie.connectUpdate(this, SLOT(movieUpdate(const QRect&)));
+ movielabel->setFrameStyle( QFrame::Box | QFrame::Plain );
+ movielabel->setMovie(movie);
+ movielabel->setFixedSize( 128+movielabel->frameWidth()*2,
+ 64+movielabel->frameWidth()*2 );
+ grid->addMultiCellWidget(new QLabel("", this), 1, 4, 8, 8);
+ grid->addMultiCellWidget(movielabel, 1, 4, 9, 9);
+
+
+ QPushButton *apply = new QPushButton("Apply", this);
+ apply->setDefault(1);
+ grid->addWidget(apply, 7, 9);
+
+ connect(apply, SIGNAL(clicked()), this, SLOT(apply()));
+
+ QTabWidget *tabs = new QTabWidget(this);
+
+
+ child_list = new QTable(0, 6, tabs);
+ child_list->setSelectionMode(QTable::Single);
+ child_list->horizontalHeader()->setLabel(0, "FDN");
+ child_list->horizontalHeader()->setLabel(1, "Description");
+ child_list->horizontalHeader()->setLabel(2, "X Coordinate");
+ child_list->horizontalHeader()->setLabel(3, "Y Coordinate");
+ child_list->horizontalHeader()->setLabel(4, "Z Coordinate");
+ child_list->horizontalHeader()->setLabel(5, "Color");
+
+ parent_list = new QTable(0, 6, tabs);
+ parent_list->setSelectionMode(QTable::Single);
+ parent_list->horizontalHeader()->setLabel(0, "FDN");
+ parent_list->horizontalHeader()->setLabel(1, "Description");
+ parent_list->horizontalHeader()->setLabel(2, "X Coordinate");
+ parent_list->horizontalHeader()->setLabel(3, "Y Coordinate");
+ parent_list->horizontalHeader()->setLabel(4, "Z Coordinate");
+ parent_list->horizontalHeader()->setLabel(5, "Color");
+
+ tabs->addTab(child_list, "Property set &1");
+ tabs->addTab(parent_list, "Property set &2");
+
+ grid->addMultiCellWidget(new QLabel(this), 4, 4, 0, 9);
+ grid->addMultiCellWidget(tabs, 5, 5, 0, 9);
+}
+
+
+DetailView::~DetailView()
+{
+}
+
+
+void
+DetailView::currentNode(NavUnit *unit)
+{
+ UnitLocation loc = unit->getLocation();
+ descr_edit->setText(unit->getShortDescr());
+ this->updateLocation(loc);
+}
+
+void
+DetailView::updateLocation(const UnitLocation &loc)
+{
+ x_edit->setValue(static_cast<int>(loc.x_));
+ y_edit->setValue(static_cast<int>(loc.y_));
+ z_edit->setValue(static_cast<int>(loc.z_));
+}
+
+void
+DetailView::apply()
+{
+}
+
+
+void
+DetailView::movieUpdate( const QRect& )
+{
+ // Uncomment this to test animated icons on your window manager
+ //setIcon( movie.framePixmap() );
+}
+
+
+void
+DetailView::movieStatus( int s )
+{
+ switch ( s ) {
+ case QMovie::SourceEmpty:
+ case QMovie::UnrecognizedFormat:
+ {
+ QPixmap pm("tt-logo.png");
+ movielabel->setPixmap(pm);
+ movielabel->setFixedSize(pm.size());
+ }
+ break;
+ default:
+ if ( movielabel->movie() ) // for flicker-free animation:
+ movielabel->setBackgroundMode( NoBackground );
+ }
+}
diff --git a/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc
new file mode 100644
index 00000000000..cb5cea1b621
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI.mpc
@@ -0,0 +1,44 @@
+// $Id$
+project(NavDisplayGUI_exec) : ciao_component, qt {
+ after += NavDisplay_exec
+ requires += qt
+ sharedname = NavDisplayGUI_exec
+ libs += NavDisplay_stub NavDisplay_svnt HUDisplay_stub HUDisplay_svnt
+ libpaths += .. ../NavDisplay
+ dynamicflags = NAVDISPLAY_EXEC_BUILD_DLL QT_DLL
+ includes += ../NavDisplay
+ idlflags += -I ../NavDisplay -Wb,export_macro=NAVDISPLAY_EXEC_Export -Wb,export_include=NavDisplay_exec_export.h
+
+ IDL_Files {
+ gendir = .
+ ../NavDisplay/NavDisplayEI.idl
+ }
+
+ Source_Files {
+ NavDisplayEIC.cpp
+ AddNavUnitCmd.cpp
+ DetailView.cpp
+ MapView.cpp
+ NavUnit.cpp
+ NodeItem.cpp
+ QuitCmd.cpp
+ RootPanel.cpp
+ UpdatePositionCmd.cpp
+ Worker.cpp
+ NavDisplayGUI_exec.cpp
+ }
+
+ MOC_Files {
+ DetailView.h
+ MapView.h
+ NodeItem.h
+ RootPanel.h
+ }
+ Source_Files {
+ DetailView_moc.cpp
+ MapView_moc.cpp
+ NodeItem_moc.cpp
+ RootPanel_moc.cpp
+ }
+
+}
diff --git a/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp
new file mode 100644
index 00000000000..224e0cac41b
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/NavDisplayGUI_exec.cpp
@@ -0,0 +1,208 @@
+// $Id$
+
+#include "NavDisplayGUI_exec.h"
+#include "CIAO_common.h"
+#include <qapplication.h>
+#include <qevent.h>
+
+#include "UpdatePositionCmd.h"
+#include "QuitCmd.h"
+#include "AddNavUnitCmd.h"
+#include "Worker.h"
+
+static const char *argv[] =
+{
+ "NavDisplayGUI"
+};
+
+/// Default constructor.
+MyImpl::NavDisplayGUI_exec_impl::NavDisplayGUI_exec_impl ()
+: unit_(1, "Model T3+"), loc_(50, 20, 0)
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::NavDisplayGUI_exec_impl ()\n"));
+}
+
+/// Default destructor.
+MyImpl::NavDisplayGUI_exec_impl::~NavDisplayGUI_exec_impl ()
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::~NavDisplayGUI_exec_impl ()\n"));
+}
+
+// Operations from HUDisplay::NavDisplay
+
+void
+MyImpl::NavDisplayGUI_exec_impl::push_Refresh (
+ HUDisplay::tick * /* ev */
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ //ACE_DEBUG ((LM_DEBUG, "ENTER: MyImpl::NavDisplayGUI_exec_impl::push_Refresh()\n"));
+
+ // Refresh position
+ HUDisplay::position_var loc =
+ this->context_->get_connection_GPSLocation (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CORBA::Long lx = loc->posx (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ CORBA::Long ly = loc->posy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+
+ mutex_.acquire();
+
+ loc_.x_ = lx % 500;
+ loc_.y_ = ly % 300;
+
+ this->unit_.setLocation(loc_);
+
+ mutex_.release();
+
+ //ACE_DEBUG ((LM_DEBUG, "DISPLAY: Current Location is: %d %d\n", int(attrs.x_), int(attrs.y_)));
+
+ RootPanel *root_pane = worker_->getMainWindow();
+ if(root_pane)
+ {
+ UpdatePositionCmd *cmd = UpdatePositionCmd::create(
+ root_pane, &(this->unit_));
+ QCustomEvent *evt = new QCustomEvent(QEvent::User, cmd);
+ QApplication::postEvent(root_pane, evt);
+ }
+
+ //ACE_DEBUG ((LM_DEBUG, "LEAVE: MyImpl::NavDisplayGUI_exec_impl::push_Refresh()\n"));
+}
+
+// Operations from Components::SessionComponent
+void
+MyImpl::NavDisplayGUI_exec_impl::set_session_context (Components::SessionContext_ptr ctx
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::set_session_context\n"));
+
+ this->context_ =
+ HUDisplay::CCM_NavDisplay_Context::_narrow (ctx
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (this->context_.in ()))
+ ACE_THROW (CORBA::INTERNAL ());
+ // Urm, we actually discard exceptions thown from this operation.
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ciao_preactivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ccm_activate (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "ENTER: MyImpl::NavDisplayGUI_exec_impl::ccm_activate\n"));
+
+ worker_ = new Worker(sizeof(argv)/sizeof(argv[0]), const_cast<char **> (argv));
+
+ if (worker_->activate(THR_NEW_LWP | THR_JOINABLE, 1) != 0)
+ {
+ ACE_DEBUG((LM_ERROR,
+ "Cannot activate client threads\n"));
+ ACE_THROW(Components::CCMException());
+ }
+
+ worker_->waitUntillInitialized();
+
+ AddNavUnitCmd *cmd = AddNavUnitCmd::create(
+ worker_->getMainWindow(), &(this->unit_));
+ QCustomEvent *evt = new QCustomEvent(QEvent::User, cmd);
+ QApplication::postEvent(worker_->getMainWindow(), evt);
+
+
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "LEAVE: MyImpl::NavDisplayGUI_exec_impl::ccm_activate\n"));
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ciao_postactivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ccm_passivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::ccm_passivate\n"));
+
+ RootPanel *target = worker_->getMainWindow();
+ if(target)
+ {
+ QuitCmd *cmd = QuitCmd::create(target);
+ QCustomEvent *evt = new QCustomEvent(QEvent::User, cmd);
+ QApplication::postEvent(target, evt);
+ worker_->thr_mgr()->wait();
+ }
+
+ delete worker_;
+}
+
+void
+MyImpl::NavDisplayGUI_exec_impl::ccm_remove (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "MyImpl::NavDisplayGUI_exec_impl::ccm_remove\n"));
+}
+
+/// Default ctor.
+MyImpl::NavDisplayGUIHome_exec_impl::NavDisplayGUIHome_exec_impl ()
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplayGUI_exec_impl::NavDisplayGUIHome_exec_impl ()\n"));
+}
+
+/// Default dtor.
+MyImpl::NavDisplayGUIHome_exec_impl::~NavDisplayGUIHome_exec_impl ()
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplayGUI_exec_impl::~NavDisplayGUIHome_exec_impl ()\n"));
+}
+
+// Explicit home operations.
+
+// Implicit home operations.
+
+::Components::EnterpriseComponent_ptr
+MyImpl::NavDisplayGUIHome_exec_impl::create (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::NavDisplayGUIHome_exec_impl::create()\n"));
+
+ return new MyImpl::NavDisplayGUI_exec_impl;
+}
+
+
+extern "C" NAVDISPLAY_EXEC_Export ::Components::HomeExecutorBase_ptr
+createNavDisplayHome_Impl (void)
+{
+ if (CIAO::debug_level () > 0)
+ ACE_DEBUG ((LM_DEBUG, "createNavDisplayHome_Impl()\n"));
+ return new MyImpl::NavDisplayGUIHome_exec_impl;
+}
diff --git a/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/README b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/README
new file mode 100644
index 00000000000..c5cb76a6fd9
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/NavDisplayGUI_exec/README
@@ -0,0 +1,15 @@
+This example is the Qt-based GUI implementation of NavDisplay component.
+
+It is NOT necessary to compile ACE/TAO/CIAO with Qt support,
+since this example does not relyes on Qt Reactor and
+communicates with GUI part using QApplication::postMessage() and
+simple Command Pattern based framework. But be sure that QTDIR
+environment variable is pointed to your Qt installation directory.
+
+If you need to build this component, make sure you have the necessary
+Qt libraries/tools installed, and define
+
+qt = 1
+
+in $(ACE_ROOT)/bin/MakeProjectCreator/config/default.features before
+creating the workspace/project for this example.
diff --git a/TAO/CIAO/examples/OEP/Display/RateGen/RateGen.mpc b/TAO/CIAO/examples/OEP/Display/RateGen/RateGen.mpc
new file mode 100644
index 00000000000..649aa038b66
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/RateGen/RateGen.mpc
@@ -0,0 +1,99 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p HUDisplay -i -c RateGen"
+
+project(RateGen_stub): ciao_client {
+ after += HUDisplay_stub
+ sharedname = RateGen_stub
+
+ idlflags += -Wb,stub_export_macro=RATEGEN_STUB_Export
+ idlflags += -Wb,stub_export_include=RateGen_stub_export.h
+ idlflags += -Wb,skel_export_macro=RATEGEN_SVNT_Export
+ idlflags += -Wb,skel_export_include=RateGen_svnt_export.h
+
+ dynamicflags = RATEGEN_STUB_BUILD_DLL
+
+ libs += HUDisplay_stub
+
+ IDL_Files {
+ RateGen.idl
+ }
+
+ Source_Files {
+ RateGenC.cpp
+ }
+}
+
+project(RateGen_svnt) : ciao_servant {
+ after += HUDisplay_svnt RateGen_stub
+ sharedname = RateGen_svnt
+ libs += RateGen_stub HUDisplay_stub HUDisplay_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=RATEGEN_SVNT_Export
+ idlflags += -Wb,export_include=RateGen_svnt_export.h
+ dynamicflags = RATEGEN_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ RateGen.cidl
+ }
+
+ IDL_Files {
+ RateGenE.idl
+ }
+
+ Source_Files {
+ RateGenEC.cpp
+ RateGenS.cpp
+ RateGen_svnt.cpp
+ }
+}
+
+
+project(RateGen_exec) : ciao_component {
+ after += RateGen_svnt
+ sharedname = RateGen_exec
+ libs += RateGen_stub HUDisplay_stub RateGen_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=RATEGEN_EXEC_Export
+ idlflags += -Wb,export_include=RateGen_exec_export.h
+ dynamicflags = RATEGEN_EXEC_BUILD_DLL
+
+ IDL_Files {
+ RateGenEI.idl
+ }
+
+ Source_Files {
+ RateGenEIC.cpp
+ RateGen_exec.cpp
+ }
+}
+
+
+
+project (RateGen_client) : ciao_client, valuetype {
+ exename = client
+ after += RateGen_stub
+ libs += RateGen_stub HUDisplay_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+
+
+project (RateGen_controller) : ciao_client, valuetype {
+ exename = controller
+ after += RateGen_stub
+ libs += RateGen_stub HUDisplay_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ controller.cpp
+ }
+}
diff --git a/TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.cpp b/TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.cpp
new file mode 100644
index 00000000000..a79c4d0a3b1
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.cpp
@@ -0,0 +1,341 @@
+// $Id$
+
+#include "RateGen_exec.h"
+#include "CIAO_common.h"
+#include "ace/Timer_Queue.h"
+#include "ace/Reactor.h"
+
+//=================================================================
+
+MyImpl::Pulse_Handler::Pulse_Handler (MyImpl::RateGen_exec_i *cb)
+ : active_ (0),
+ done_ (0),
+ tid_ (0),
+ pulse_callback_ (cb)
+{
+ // Nothing
+ this->reactor (new ACE_Reactor);
+}
+
+MyImpl::Pulse_Handler::~Pulse_Handler ()
+{
+ delete this->reactor ();
+ this->reactor (0);
+}
+
+int
+MyImpl::Pulse_Handler::open_h ()
+{
+ return this->activate ();
+}
+
+int
+MyImpl::Pulse_Handler::close_h ()
+{
+ this->done_ = 1;
+ this->reactor ()->notify ();
+
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Waiting\n"));
+ }
+
+ return this->wait ();
+}
+
+int
+MyImpl::Pulse_Handler::start (CORBA::Long hertz)
+{
+ if (hertz == 0 || this->active_ != 0) // Not valid
+ {
+ return -1;
+ }
+
+ long usec = 1000000 / hertz;
+
+ this->tid_ = this->reactor ()->schedule_timer (this,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec));
+
+ this->active_ = 1;
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::stop (void)
+{
+ if (this->active_ == 0) // Not valid.
+ {
+ return -1;
+ }
+
+ this->reactor ()->cancel_timer (this);
+
+ this->active_ = 0;
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::active (void)
+{
+ return this->active_;
+}
+
+int
+MyImpl::Pulse_Handler::handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask)
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("[%x] handle = %d, close_mask = %d\n"),
+ this,
+ handle,
+ close_mask));
+ }
+
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::handle_timeout (const ACE_Time_Value &,
+ const void *)
+{
+ this->pulse_callback_->pulse ();
+
+// ACE_DEBUG ((LM_DEBUG,
+// ACE_TEXT ("[%x] with count #%05d timed out at %d.%d!\n"),
+// this,
+// tv.sec (),
+// tv.usec ()));
+
+ return 0;
+}
+
+int
+MyImpl::Pulse_Handler::svc (void)
+{
+ this->reactor ()->owner (ACE_OS::thr_self ());
+
+ while (!this->done_)
+ {
+ this->reactor ()->handle_events ();
+ }
+
+ return 0;
+}
+
+//=================================================================
+
+MyImpl::RateGen_exec_i::RateGen_exec_i ()
+ : hertz_ (0),
+ pulser_ (this)
+{
+
+}
+
+MyImpl::RateGen_exec_i::RateGen_exec_i (CORBA::Long hz)
+ : hertz_ (hz),
+ pulser_ (this)
+{
+}
+
+MyImpl::RateGen_exec_i::~RateGen_exec_i ()
+{
+}
+
+CORBA::Long
+MyImpl::RateGen_exec_i::hertz (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->hertz_;
+}
+
+void
+MyImpl::RateGen_exec_i::hertz (CORBA::Long hertz
+ ACE_ENV_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->hertz_ = hertz;
+}
+
+// Operations from supported interface(s)
+
+void
+MyImpl::RateGen_exec_i::start (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (this->hertz_ == 0 || this->pulser_.active())
+ {
+ ACE_THROW (CORBA::BAD_INV_ORDER ());
+ }
+
+ // @@ Start the rate generator
+ this->pulser_.start (this->hertz_);
+}
+
+void
+MyImpl::RateGen_exec_i::stop (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (! this->pulser_.active ())
+ {
+ ACE_THROW (CORBA::BAD_INV_ORDER ());
+ }
+
+ // @@ stop the rate generator
+ this->pulser_.stop ();
+}
+
+CORBA::Boolean
+MyImpl::RateGen_exec_i::active (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return this->pulser_.active ();
+}
+
+// Operations from Components::SessionComponent
+
+void
+MyImpl::RateGen_exec_i::set_session_context (
+ Components::SessionContext_ptr ctx
+ ACE_ENV_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::set_session_context\n"));
+ }
+
+ this->context_ =
+ HUDisplay::CCM_RateGen_Context::_narrow (ctx
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (CORBA::is_nil (this->context_.in ()))
+ {
+ ACE_THROW (CORBA::INTERNAL ());
+ }
+ // Urm, we actually discard exceptions thown from this operation.
+
+}
+
+void
+MyImpl::RateGen_exec_i::ciao_preactivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::RateGen_exec_i::ccm_activate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::ccm_activate\n"));
+ }
+
+ this->pulser_.open_h ();
+}
+
+void
+MyImpl::RateGen_exec_i::ciao_postactivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+}
+
+void
+MyImpl::RateGen_exec_i::ccm_passivate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::ccm_passivate\n"));
+ }
+
+ this->pulser_.close_h ();
+}
+
+void
+MyImpl::RateGen_exec_i::ccm_remove (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "MyImpl::RateGen_exec_i::ccm_remove\n"));
+ }
+}
+
+void
+MyImpl::RateGen_exec_i::pulse (void)
+{
+ ACE_TRY_NEW_ENV
+ {
+ if (CIAO::debug_level () > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Pushing HUDisplay::tick event!\n")));
+ }
+
+ HUDisplay::tick_var ev = new OBV_HUDisplay::tick ();
+
+ this->context_->push_Pulse (ev.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ // @@ do nothing?
+ }
+ ACE_ENDTRY;
+
+}
+
+MyImpl::RateGenHome_exec_i::RateGenHome_exec_i ()
+{
+}
+
+MyImpl::RateGenHome_exec_i::~RateGenHome_exec_i ()
+{
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::RateGenHome_exec_i::new_RateGen (CORBA::Long /* hertz */
+ ACE_ENV_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ Components::EnterpriseComponent_ptr tmp = 0;
+ ACE_NEW_THROW_EX (tmp,
+ MyImpl::RateGen_exec_i,
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (tmp);
+
+ return tmp;
+}
+
+::Components::EnterpriseComponent_ptr
+MyImpl::RateGenHome_exec_i::create (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException))
+{
+ return new MyImpl::RateGen_exec_i ();
+}
+
+
+extern "C" RATEGEN_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRateGenHome_Impl (void)
+{
+ return new MyImpl::RateGenHome_exec_i ();
+}
diff --git a/TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.h b/TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.h
new file mode 100644
index 00000000000..7e29d047e75
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/RateGen/RateGen_exec.h
@@ -0,0 +1,187 @@
+// $Id$
+
+/**
+ * @file RateGen_exec.h
+ *
+ * Header file for the actualy RateGen and RateGenHome component
+ * implementation.
+ *
+ * @author Nanbor Wang <nanbor@cse.wustl.edu>
+ */
+
+#ifndef RATEGEN_EXEC_H
+#define RATEGEN_EXEC_H
+
+#include "RateGenEIC.h"
+#include "tao/LocalObject.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+namespace MyImpl
+{
+ // Forward decl.
+ class RateGen_exec_i;
+
+ /**
+ * @brief Active pulse generater
+ */
+ class Pulse_Handler : public ACE_Task_Base
+ {
+ public:
+ // Default constructor
+ Pulse_Handler (RateGen_exec_i *cb);
+ ~Pulse_Handler ();
+
+ int open_h (void);
+
+ int close_h (void);
+
+ int start (CORBA::Long hertz);
+
+ int stop (void);
+
+ int active (void);
+
+ // Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ // Called when <Time_Handler> is removed.
+ virtual int handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask);
+
+ virtual int svc (void);
+
+ private:
+ /// Tracking whether we are actively generating pulse or not.
+ long active_;
+
+ /// Flag to indicate completion of this active object.
+ int done_;
+
+ /// The timer id we are waiting.
+ int tid_;
+
+ RateGen_exec_i *pulse_callback_;
+
+ ACE_Thread_Manager thr_mgr_;
+ };
+
+ /**
+ * @class RateGen_exec_i
+ *
+ * RateGen executor implementation class.
+ */
+ class RATEGEN_EXEC_Export RateGen_exec_i :
+ public virtual HUDisplay::RateGen_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default constructor.
+ RateGen_exec_i ();
+
+ /// Initialize with a default frequency.
+ RateGen_exec_i (CORBA::Long hz);
+
+ /// Default destructor.
+ ~RateGen_exec_i ();
+
+ // Attribute operations.
+
+ virtual CORBA::Long hertz (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void hertz (CORBA::Long hertz
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from supported interface(s)
+
+ virtual void start (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void stop (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual CORBA::Boolean active (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void set_session_context (Components::SessionContext_ptr ctx
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_preactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_activate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ciao_postactivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_passivate (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ virtual void ccm_remove (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+
+ /// Helper function to be called back by Pulse_Handler
+ void pulse (void);
+
+ protected:
+ /// Frequency
+ CORBA::Long hertz_;
+
+ /// Copmponent specific context
+ HUDisplay::CCM_RateGen_Context_var context_;
+
+ /// An active object that actually trigger the generation of
+ /// periodic events.
+ Pulse_Handler pulser_;
+ };
+
+ /**
+ * @class RateGenHome_exec_i
+ *
+ * RateGen home executor implementation class.
+ */
+ class RATEGEN_EXEC_Export RateGenHome_exec_i :
+ public virtual HUDisplay::CCM_RateGenHome,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ /// Default ctor.
+ RateGenHome_exec_i ();
+
+ /// Default dtor.
+ ~RateGenHome_exec_i ();
+
+ // Explicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ new_RateGen (CORBA::Long hertz
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Implicit home operations.
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Components::CCMException));
+ };
+
+}
+
+extern "C" RATEGEN_EXEC_Export ::Components::HomeExecutorBase_ptr
+createRateGenHome_Impl (void);
+
+#endif /* RATEGEN_EXEC_H */
diff --git a/TAO/CIAO/examples/OEP/Display/descriptors/NOTE-win.txt b/TAO/CIAO/examples/OEP/Display/descriptors/NOTE-win.txt
new file mode 100644
index 00000000000..463c05cb080
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/descriptors/NOTE-win.txt
@@ -0,0 +1,91 @@
+Conventional test:
+==================
+
+Remote Daemon:
+--------------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Remote Daemon
+ .....\tools\Daemon\CIAO_Daemon -ORBEndpoint iiop://localhost:12000 -n ../../../../tools/ComponentServer/ComponentServer
+
+Local Daemon:
+--------------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Local Daemon
+ .....\tools\Daemon\CIAO_Daemon -ORBEndpoint iiop://localhost:10000 -n ../../../../tools/ComponentServer/ComponentServer
+
+
+Assembly Manager
+-----------------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Assembly Manager
+ .....\tools\Assembly_Deployer\Assembly_Manager -o ior -c test.dat
+
+Assembly Deployer
+-----------------
+
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Assembly Deployer
+ .....\tools\Assembly_Deployer\Assembly_Deployer -k file://ior -a HUDisplay.cad -o IDfile
+
+client
+------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Client
+ ..\RateGen\controller -o
+
+
+Tearing down the application:
+-----------------------------
+
+ .....\tools\Assembly_Deployer\Assembly_Deployer -k file://ior -d IDfile
+
+
+RT-server-test:
+===============
+
+Remote Daemon:
+--------------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Remote Daemon
+ .....\tools\Daemon\CIAO_Daemon -ORBEndpoint iiop://localhost:12000 -n ../../../../tools/RTComponentServer/RTComponentServer -m svcmap.dat
+
+Local Daemon:
+--------------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Local Daemon
+ .....\tools\Daemon\CIAO_Daemon -ORBEndpoint iiop://localhost:10000 -n ../../../../tools/RTComponentServer/RTComponentServer -m svcmap.dat
+
+
+Assembly Manager
+-----------------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Assembly Manager
+ .....\tools\Assembly_Deployer\Assembly_Manager -o ior -c test.dat
+
+Assembly Deployer
+-----------------
+
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Assembly Deployer
+ .....\tools\Assembly_Deployer\Assembly_Deployer -k file://ior -a HUDisplay-rtcad.cad -o IDfile
+
+client
+------
+
+ w:\TAO\CIAO\examples\OEP\Display\descriptors\
+ title Controller
+ ..\RateGen\controller -o
+
+Tearing down the application:
+-----------------------------
+
+ .....\tools\Assembly_Deployer\Assembly_Deployer -k file://ior -d IDfile
diff --git a/TAO/CIAO/examples/OEP/Display/descriptors/NOTE.txt b/TAO/CIAO/examples/OEP/Display/descriptors/NOTE.txt
new file mode 100644
index 00000000000..902735238e3
--- /dev/null
+++ b/TAO/CIAO/examples/OEP/Display/descriptors/NOTE.txt
@@ -0,0 +1,140 @@
+This directory contains various XML descriptors and configuration
+files required to compose the HUDisplay application in a variety of
+different ways. Let's go over a few important files first:
+
+test.dat:
+---------
+
+ This file describes the deployment daemons CIAO's Assembly_Manager
+ will contact to instantiate ComponentServer's, home's, and component
+ instances. Each line specify the name of a installation
+ "destination" (I used this to specify <processcollocation>
+ destination in various *.cad files) and the corresponding IOR for
+ the CIAO_Daemon. The first entry is the "default" destination the
+ deployment framework will use.
+
+ For example, test.dat now contains:
+
+ Default corbaloc:iiop:localhost:10000/ServerActivator
+ Remote corbaloc:iiop:localhost:12000/ServerActivator
+
+ You can copy and modify the copy to deploy the components in various
+ different locations to let the application truely "distributed".
+ For example, changing the remote ServerActivator to:
+ corbaloc:iiop:deuce.doc.wustl.edu:13000/ServerActivator
+
+ Remember to start up the Assembly_Manager in Step 2 using the
+ revised "test.dat" you created, and start up the CIAO_Daemon's in
+ Step 1 according to the specification.
+
+*.cad:
+------
+
+ These files specify how an application should be composed. The
+ specification includes, where to install a component, what
+ implementation to use, and how to connect components together.
+ Currently, we have:
+
+ BasicSP.cad: Plain vanilla assembly descriptor. This file install
+ all components using the "Default" (the first daemon)
+ in 'test.dat. You can see the application output
+ from the default daemon shell.
+
+Unfortunately, there's no run_test.pl for starting and running these
+example configurations/assemblies as these daemons/managers programs
+are still under development. You will need several shell windows for
+them. All the following step should be run from this subdirectory
+($CIAO_ROOT/examples/OEP/Display/descriptors/). Here are the
+steps to demonstrate the examples:
+
+Step 1:
+=======
+
+ You need to start up the CIAO daemon as specified in the
+ deployment configuration file 'test.dat' (Notice the endpoint
+ specification.) If you run more than one daemon (each with its
+ own host port), I recommend running each CIAO_Daemon in its own
+ shell window so you can tell where a component in the example
+ application is running. Here are some hints on how to start the
+ daemon:
+
+ ${CIAO_ROOT}/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:10000 -n ../../../../tools/ComponentServer/ComponentServer
+
+ and on Windows
+
+ %CIAO_ROOT%/tools/Daemon/CIAO_Daemon -ORBEndpoint iiop://localhost:10000 -n ../../../../tools/ComponentServer/ComponentServer
+
+ Note that the environment variable CIAO_ROOT must be set
+ (to TAO_ROOT/CIAO).
+
+Step 2:
+=======
+
+ Next, you will need to start up the Assembly_Manager which actually
+ does the assembly work. This should also be started in a separate
+ shell window.
+
+ ${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat
+
+ or
+
+ %CIAO_ROOT%/tools/Assembly_Deployer/Assembly_Manager -o ior -c test.dat
+
+Step 3:
+=======
+
+ You then need to instruct the Assembly_Manager to deploy a specific
+ component assembly descriptor. For example:
+
+ ${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a BasicSP.cad -o IDfile
+
+ or
+
+ %CIAO_ROOT%/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -a BasicSP.cad -o IDfile
+
+Step 4:
+=======
+
+ All the .cad files instruct the Assembly_Manager to write the IOR of
+ the RateGen component to a file called "rategen.ior" in this
+ directory. You will then need to use a controller program in a
+ separate shell window to switch on/off the Rate Generator. Cont
+
+ Execute the controller with:
+
+ ..\EC\controller -o # To switch on the EC component
+
+ See its source to check what options are available to start up the
+ controller. (Hints: you can control the rate (hertz) of the Rate
+ Generator component.)
+
+ Once the controller is running, check out the Daemon window for
+ text-based BMClosedED and BMDisplay components. Once you are
+ happy with it, you can stop the EC component by executing the
+ controller as:
+
+ ../EC/controller -f # To switch off the EC component
+
+ Repeat this step again to instruct the EC component to start
+ generating events.
+
+Step 5:
+=======
+
+ Once you are done with the test. Use the following command to
+ tear_down the application, kill all ComponentServer's, and terminate
+ both the Assembly_Deployer and Assembly_Manager process.
+
+ ${CIAO_ROOT}/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -d IDfile
+
+ or
+
+ %CIAO_ROOT%/tools/Assembly_Deployer/Assembly_Deployer -k file://ior -d IDfile
+
+ Repeat Step 2-5 using different configurations and assembly
+ descriptors.
+
+Step 6:
+=======
+
+ Terminate CIAO_Daemon (either using ^C or DaemonController.)
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc
new file mode 100644
index 00000000000..5ebab1cc4e2
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMClosedED/BMClosedED.mpc
@@ -0,0 +1,66 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p HUDisplay -i BMClosedED"
+// This file has been manually modified to add a second component implementation.
+
+project(BasicSP_EC_BMClosedED_stub): ciao_client {
+ requires += dummy_label
+ after += BasicSP_EC_stub
+ sharedname = BMClosedED_stub
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,stub_export_macro=BMCLOSEDED_STUB_Export -Wb,stub_export_include=BMClosedED_stub_export.h -Wb,skel_export_macro=BMCLOSEDED_SVNT_Export -Wb,skel_export_include=BMClosedED_svnt_export.h
+ dynamicflags = BMCLOSEDED_STUB_BUILD_DLL
+ libs += TAO_RTEvent
+
+ IDL_Files {
+ BMClosedED.idl
+ }
+
+ Source_Files {
+ BMClosedEDC.cpp
+ }
+}
+
+project(BasicSP_EC_BMClosedED_svnt) : ciao_servant {
+ requires += dummy_label
+ after += BasicSP_EC_svnt BasicSP_EC_BMClosedED_stub
+ sharedname = BMClosedED_svnt
+ libs += BMClosedED_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMCLOSEDED_SVNT_Export -Wb,export_include=BMClosedED_svnt_export.h
+ dynamicflags = BMCLOSEDED_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMClosedED.cidl
+ }
+
+ IDL_Files {
+ BMClosedEDE.idl
+ }
+
+ Source_Files {
+ BMClosedEDEC.cpp
+ BMClosedEDS.cpp
+ BMClosedED_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC_BMClosedED_exec) : ciao_component {
+ requires += dummy_label
+ after += BasicSP_EC_BMClosedED_svnt
+ sharedname = BMClosedED_exec
+ libs += BMClosedED_stub BMClosedED_svnt BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMCLOSEDED_EXEC_Export -Wb,export_include=BMClosedED_exec_export.h
+ dynamicflags = BMCLOSEDED_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMClosedEDEI.idl
+ }
+
+ Source_Files {
+ BMClosedEDEIC.cpp
+ BMClosedED_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc
new file mode 100644
index 00000000000..048916c3025
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDevice/BMDevice.mpc
@@ -0,0 +1,67 @@
+// $Id$
+
+project(BasicSP_EC_BMDevice_stub): ciao_client {
+ after += BasicSP_EC_stub
+ sharedname = BMDevice_stub
+ requires += dummy_label
+
+ idlflags += -Wb,stub_export_macro=BMDEVICE_STUB_Export -Wb,stub_export_include=BMDevice_stub_export.h -Wb,skel_export_macro=BMDEVICE_SVNT_Export -Wb,skel_export_include=BMDevice_svnt_export.h
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ libs += BasicSP_stub TAO_RTEvent
+ dynamicflags = BMDEVICE_STUB_BUILD_DLL
+
+ IDL_Files {
+ BMDevice.idl
+ }
+
+ Source_Files {
+ BMDeviceC.cpp
+ }
+}
+
+project(BasicSP_EC_BMDevice_svnt) : ciao_servant {
+ after += BasicSP_EC_BMDevice_stub BasicSP_EC_stub
+ sharedname = BMDevice_svnt
+ libs += BMDevice_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ requires += dummy_label
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDEVICE_SVNT_Export -Wb,export_include=BMDevice_svnt_export.h
+ dynamicflags = BMDEVICE_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDevice.cidl
+ }
+
+ IDL_Files {
+ BMDeviceE.idl
+ }
+
+ Source_Files {
+ BMDeviceEC.cpp
+ BMDeviceS.cpp
+ BMDevice_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC_BMDevice_exec) : ciao_component {
+ after += BasicSP_EC_BMDevice_svnt
+ sharedname = BMDevice_exec
+ requires += dummy_label
+ libs += BMDevice_stub BMDevice_svnt BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDEVICE_EXEC_Export -Wb,export_include=BMDevice_exec_export.h
+ dynamicflags = BMDEVICE_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDeviceEI.idl
+ }
+
+ Source_Files {
+ BMDeviceES.cpp
+ BMDeviceEIC.cpp
+ BMDeviceEIS.cpp
+ BMDevice_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc
new file mode 100644
index 00000000000..7083ae3cbd7
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BMDisplay/BMDisplay.mpc
@@ -0,0 +1,65 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP -i BMDisplay"
+
+project(BasicSP_EC_BMDisplay_stub): ciao_client {
+ after += BasicSP_EC_stub
+ requires += dummy_label
+ sharedname = BMDisplay_stub
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,stub_export_macro=BMDISPLAY_STUB_Export -Wb,stub_export_include=BMDisplay_stub_export.h -Wb,skel_export_macro=BMDISPLAY_SVNT_Export -Wb,skel_export_include=BMDisplay_svnt_export.h
+ dynamicflags = BMDISPLAY_STUB_BUILD_DLL
+ libs += TAO_RTEvent
+
+ IDL_Files {
+ BMDisplay.idl
+ }
+
+ Source_Files {
+ BMDisplayC.cpp
+ }
+}
+
+project(BasicSP_EC_BMDisplay_svnt) : ciao_servant {
+ after += BasicSP_EC_svnt BasicSP_EC_BMDisplay_stub
+ requires += dummy_label
+ sharedname = BMDisplay_svnt
+ libs += BMDisplay_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDISPLAY_SVNT_Export -Wb,export_include=BMDisplay_svnt_export.h
+ dynamicflags = BMDISPLAY_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDisplay.cidl
+ }
+
+ IDL_Files {
+ BMDisplayE.idl
+ }
+
+ Source_Files {
+ BMDisplayEC.cpp
+ BMDisplayS.cpp
+ BMDisplay_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC_BMDisplay_exec) : ciao_component {
+ after += BasicSP_EC_BMDisplay_svnt
+ requires += dummy_label
+ sharedname = BMDisplay_exec
+ libs += BMDisplay_stub BMDisplay_svnt BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDISPLAY_EXEC_Export -Wb,export_include=BMDisplay_exec_export.h
+ dynamicflags = BMDISPLAY_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDisplayEI.idl
+ }
+
+ Source_Files {
+ BMDisplayEIC.cpp
+ BMDisplay_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC/BasicSP.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BasicSP.mpc
new file mode 100644
index 00000000000..e7b8ab087da
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC/BasicSP.mpc
@@ -0,0 +1,35 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n HUDisplay"
+
+project(BasicSP_EC_stub): ciao_client {
+
+ requires += dummy_label
+ sharedname = BasicSP_stub
+ idlflags += -Wb,stub_export_macro=BASICSP_STUB_Export -Wb,stub_export_include=BasicSP_stub_export.h -Wb,skel_export_macro=BASICSP_SVNT_Export -Wb,skel_export_include=BasicSP_svnt_export.h
+ dynamicflags = BASICSP_STUB_BUILD_DLL
+ libpaths += ..\..\..\..\..\lib,..\..\..\..\tao\IFR_Client,..\..\..\..\tao\Valuetype,..\..\..\..\tao,..\..\..\..\..\ace,..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\tao\PortableServer,..\..\..\..\tao\IORInterceptor,..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\ACEXML\common,..\..\..\..\tao\IORTable
+ libs += TAO_RTEvent
+
+ IDL_Files {
+ BasicSP.idl
+ }
+
+ Source_Files {
+ BasicSPC.cpp
+ }
+}
+
+project(BasicSP_EC_svnt) : ciao_server {
+ requires += dummy_label
+ after += BasicSP_stub
+ sharedname = BasicSP_svnt
+ libs += BasicSP_stub TAO_RTEvent
+ libpaths += ..\..\..\..\..\lib,..\..\..\..\tao\IFR_Client,..\..\..\..\tao\Valuetype,..\..\..\..\tao,..\..\..\..\..\ace,..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\tao\PortableServer,..\..\..\..\tao\IORInterceptor,..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\ACEXML\common,..\..\..\..\tao\IORTable
+
+ idlflags += -Wb,export_macro=BASICSP_SVNT_Export -Wb,export_include=BasicSP_svnt_export.h
+ dynamicflags = BASICSP_SVNT_BUILD_DLL
+
+ Source_Files {
+ BasicSPS.cpp
+ }
+}
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC/EC/EC.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC/EC/EC.mpc
new file mode 100644
index 00000000000..84f5ac0880c
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC/EC/EC.mpc
@@ -0,0 +1,75 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP_EC -i -c EC"
+
+project(BasicSP_EC_EC_stub): ciao_client {
+ after += BasicSP_EC_stub
+ requires += dummy_label
+ sharedname = EC_stub
+ idlflags += -Wb,stub_export_macro=EC_STUB_Export -Wb,stub_export_include=EC_stub_export.h -Wb,skel_export_macro=EC_SVNT_Export -Wb,skel_export_include=EC_svnt_export.h
+
+ IDL_Files {
+ EC.idl
+ }
+
+ Source_Files {
+ ECC.cpp
+ }
+}
+
+project(BasicSP_ECEC_svnt) : ciao_servant {
+ after += BasicSP_EC_svnt EC_stub
+ requires += dummy_label
+ sharedname = EC_svnt
+ libs += EC_stub BasicSP_EC_stub BasicSP_EC_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=EC_SVNT_Export -Wb,export_include=EC_svnt_export.h
+
+ CIDL_Files {
+ EC.cidl
+ }
+
+ IDL_Files {
+ ECE.idl
+ }
+
+ Source_Files {
+ ECEC.cpp
+ ECS.cpp
+ EC_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC_EC_exec) : ciao_component {
+ after += EC_svnt
+ requires += dummy_label
+ sharedname = EC_exec
+ libs += EC_stub EC_svnt BasicSP_EC_stub BasicSP_EC_svnt
+ libpaths += ..
+ idlflags += -Wb,export_macro=EC_EXEC_Export -Wb,export_include=EC_exec_export.h
+ IDL_Files {
+ ECEI.idl
+ }
+
+ Source_Files {
+ ECEIC.cpp
+ EC_exec.cpp
+ }
+}
+
+
+
+project (BasicSP_EC_EC_client) : ciao_client {
+ exename = client
+ requires += dummy_label
+ after += EC_stub BasicSP_EC_stub
+ libpaths += ..
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc
new file mode 100644
index 00000000000..3cdde7c608d
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMClosedED/BMClosedED.mpc
@@ -0,0 +1,66 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p HUDisplay -i BMClosedED"
+// This file has been manually modified to add a second component implementation.
+
+project(BasicSP_EC2_BMClosedED_stub): ciao_client {
+ after += BasicSP_EC2_stub
+ requires += dummy_label
+ sharedname = BMClosedED_stub
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,stub_export_macro=BMCLOSEDED_STUB_Export -Wb,stub_export_include=BMClosedED_stub_export.h -Wb,skel_export_macro=BMCLOSEDED_SVNT_Export -Wb,skel_export_include=BMClosedED_svnt_export.h
+ dynamicflags = BMCLOSEDED_STUB_BUILD_DLL
+ libs += TAO_RTEvent
+
+ IDL_Files {
+ BMClosedED.idl
+ }
+
+ Source_Files {
+ BMClosedEDC.cpp
+ }
+}
+
+project(BasicSp_Ec2_BMClosedED_svnt) : ciao_servant {
+ after += BasicSP_EC2_svnt BasicSP_EC2_BMClosedED_stub
+ requires += dummy_label
+ sharedname = BMClosedED_svnt
+ libs += BMClosedED_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMCLOSEDED_SVNT_Export -Wb,export_include=BMClosedED_svnt_export.h
+ dynamicflags = BMCLOSEDED_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMClosedED.cidl
+ }
+
+ IDL_Files {
+ BMClosedEDE.idl
+ }
+
+ Source_Files {
+ BMClosedEDEC.cpp
+ BMClosedEDS.cpp
+ BMClosedED_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC2_BMClosedED_exec) : ciao_component {
+ after += BasicSP_EC2_BMClosedED_svnt
+ sharedname = BMClosedED_exec
+ requires += dummy_label
+ libs += BMClosedED_stub BMClosedED_svnt BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMCLOSEDED_EXEC_Export -Wb,export_include=BMClosedED_exec_export.h
+ dynamicflags = BMCLOSEDED_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMClosedEDEI.idl
+ }
+
+ Source_Files {
+ BMClosedEDEIC.cpp
+ BMClosedED_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc
new file mode 100644
index 00000000000..c88559d19b4
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDevice/BMDevice.mpc
@@ -0,0 +1,67 @@
+// $Id$
+
+project(BasicSP_EC2_BMDevice_stub): ciao_client {
+ after += BasicSP_EC2_stub
+ requires += dummy_label
+ sharedname = BMDevice_stub
+
+ idlflags += -Wb,stub_export_macro=BMDEVICE_STUB_Export -Wb,stub_export_include=BMDevice_stub_export.h -Wb,skel_export_macro=BMDEVICE_SVNT_Export -Wb,skel_export_include=BMDevice_svnt_export.h
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ libs += BasicSP_stub TAO_RTEvent
+ dynamicflags = BMDEVICE_STUB_BUILD_DLL
+
+ IDL_Files {
+ BMDevice.idl
+ }
+
+ Source_Files {
+ BMDeviceC.cpp
+ }
+}
+
+project(BasicSP_EC2_BMDevice_svnt) : ciao_servant {
+ after += BasicSP_EC2_BMDevice_stub BasicSP_EC2_stub
+ requires += dummy_label
+ sharedname = BMDevice_svnt
+ libs += BMDevice_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDEVICE_SVNT_Export -Wb,export_include=BMDevice_svnt_export.h
+ dynamicflags = BMDEVICE_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDevice.cidl
+ }
+
+ IDL_Files {
+ BMDeviceE.idl
+ }
+
+ Source_Files {
+ BMDeviceEC.cpp
+ BMDeviceS.cpp
+ BMDevice_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC2_BMDevice_exec) : ciao_component {
+ after += BasicSP_EC2_BMDevice_svnt
+ requires += dummy_label
+ sharedname = BMDevice_exec
+ libs += BMDevice_stub BMDevice_svnt BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDEVICE_EXEC_Export -Wb,export_include=BMDevice_exec_export.h
+ dynamicflags = BMDEVICE_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDeviceEI.idl
+ }
+
+ Source_Files {
+ BMDeviceES.cpp
+ BMDeviceEIC.cpp
+ BMDeviceEIS.cpp
+ BMDevice_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc
new file mode 100644
index 00000000000..a9c947d66a7
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BMDisplay/BMDisplay.mpc
@@ -0,0 +1,65 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP -i BMDisplay"
+
+project(BasicSP_EC2_BMDisplay_stub): ciao_client {
+ after += BasicSP_EC2_stub
+ requires += dummy_label
+ sharedname = BMDisplay_stub
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,stub_export_macro=BMDISPLAY_STUB_Export -Wb,stub_export_include=BMDisplay_stub_export.h -Wb,skel_export_macro=BMDISPLAY_SVNT_Export -Wb,skel_export_include=BMDisplay_svnt_export.h
+ dynamicflags = BMDISPLAY_STUB_BUILD_DLL
+ libs += TAO_RTEvent
+
+ IDL_Files {
+ BMDisplay.idl
+ }
+
+ Source_Files {
+ BMDisplayC.cpp
+ }
+}
+
+project(BasicSP_EC2_BMDisplay_svnt) : ciao_servant {
+ after += BasicSP_EC2_svnt BasicSP_EC2_BMDisplay_stub
+ requires += dummy_label
+ sharedname = BMDisplay_svnt
+ libs += BMDisplay_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDISPLAY_SVNT_Export -Wb,export_include=BMDisplay_svnt_export.h
+ dynamicflags = BMDISPLAY_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ BMDisplay.cidl
+ }
+
+ IDL_Files {
+ BMDisplayE.idl
+ }
+
+ Source_Files {
+ BMDisplayEC.cpp
+ BMDisplayS.cpp
+ BMDisplay_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC2_BMDisplay_exec) : ciao_component {
+ after += BMDisplay_EC2_svnt
+ requires += dummy_label
+ sharedname = BMDisplay_exec
+ libs += BMDisplay_stub BMDisplay_svnt BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=BMDISPLAY_EXEC_Export -Wb,export_include=BMDisplay_exec_export.h
+ dynamicflags = BMDISPLAY_EXEC_BUILD_DLL
+
+ IDL_Files {
+ BMDisplayEI.idl
+ }
+
+ Source_Files {
+ BMDisplayEIC.cpp
+ BMDisplay_exec.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BasicSP.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BasicSP.mpc
new file mode 100644
index 00000000000..41070e5f37e
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/BasicSP.mpc
@@ -0,0 +1,35 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -n HUDisplay"
+
+project(BasicSP_EC2_stub): ciao_client {
+
+ sharedname = BasicSP_stub
+ requires += dummy_label
+ idlflags += -Wb,stub_export_macro=BASICSP_STUB_Export -Wb,stub_export_include=BasicSP_stub_export.h -Wb,skel_export_macro=BASICSP_SVNT_Export -Wb,skel_export_include=BasicSP_svnt_export.h
+ dynamicflags = BASICSP_STUB_BUILD_DLL
+ libpaths += ..\..\..\..\..\lib,..\..\..\..\tao\IFR_Client,..\..\..\..\tao\Valuetype,..\..\..\..\tao,..\..\..\..\..\ace,..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\tao\PortableServer,..\..\..\..\tao\IORInterceptor,..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\ACEXML\common,..\..\..\..\tao\IORTable
+ libs += TAO_RTEvent
+
+ IDL_Files {
+ BasicSP.idl
+ }
+
+ Source_Files {
+ BasicSPC.cpp
+ }
+}
+
+project(BasicSP_EC2_svnt) : ciao_server {
+ after += BasicSP_stub
+ requires += dummy_label
+ sharedname = BasicSP_svnt
+ libs += BasicSP_stub TAO_RTEvent
+ libpaths += ..\..\..\..\..\lib,..\..\..\..\tao\IFR_Client,..\..\..\..\tao\Valuetype,..\..\..\..\tao,..\..\..\..\..\ace,..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\tao\PortableServer,..\..\..\..\tao\IORInterceptor,..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\ACEXML\common,..\..\..\..\tao\IORTable
+
+ idlflags += -Wb,export_macro=BASICSP_SVNT_Export -Wb,export_include=BasicSP_svnt_export.h
+ dynamicflags = BASICSP_SVNT_BUILD_DLL
+
+ Source_Files {
+ BasicSPS.cpp
+ }
+}
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/EC/EC.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/EC/EC.mpc
new file mode 100644
index 00000000000..3adf2a52f33
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/EC/EC.mpc
@@ -0,0 +1,98 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -l .. -p BasicSP -i -c EC"
+
+project(BasicSP_EC2_EC_stub): ciao_client {
+ after += BasicSP_EC2_stub
+ requires += dummy_label
+ sharedname = EC_stub
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,stub_export_macro=EC_STUB_Export -Wb,stub_export_include=EC_stub_export.h -Wb,skel_export_macro=EC_SVNT_Export -Wb,skel_export_include=EC_svnt_export.h
+ dynamicflags = EC_STUB_BUILD_DLL
+ libs += TAO_RTEvent
+
+ IDL_Files {
+ EC.idl
+ }
+
+ Source_Files {
+ ECC.cpp
+ }
+}
+
+project(BasicSP_EC2_EC_svnt) : ciao_servant {
+ after += BasicSP_EC2_svnt BasicSP_EC2_EC_stub
+ requires += dummy_label
+ sharedname = EC_svnt
+ libs += EC_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=EC_SVNT_Export -Wb,export_include=EC_svnt_export.h
+ dynamicflags = EC_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ EC.cidl
+ }
+
+ IDL_Files {
+ ECE.idl
+ }
+
+ Source_Files {
+ ECEC.cpp
+ ECS.cpp
+ EC_svnt.cpp
+ }
+}
+
+
+project(BasicSP_EC2_EC_exec) : ciao_component {
+ after += BasicSP_EC2_EC_svnt
+ sharedname = EC_exec
+ requires += dummy_label
+ libs += EC_stub BasicSP_stub EC_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=EC_EXEC_Export -Wb,export_include=EC_exec_export.h
+ dynamicflags = EC_EXEC_BUILD_DLL
+
+ IDL_Files {
+ ECEI.idl
+ }
+
+ Source_Files {
+ ECEIC.cpp
+ EC_exec.cpp
+ }
+}
+
+
+
+project (BasicSP_EC2_EC_client) : ciao_client, valuetype {
+ exename = client
+ requires += dummy_label
+ after += BasicSP_EC2_EC_stub
+ libs += EC_stub BasicSP_stub TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+
+
+project (BasicSP_EC2_EC_controller) : ciao_client, valuetype {
+ exename = controller
+ requires += dummy_label
+ after += BasicSP_EC2_EC_stub
+ libs += EC_stub BasicSP_stub TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ controller.cpp
+ }
+}
+
diff --git a/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc
new file mode 100644
index 00000000000..074ba4f847b
--- /dev/null
+++ b/TAO/CIAO/examples/handcrafted/BasicSP_EC2/RTEventService/RTEventService.mpc
@@ -0,0 +1,67 @@
+// $Id$
+
+project(RTEventService_stub): ciao_client {
+ after += BasicSP_stub
+ requires += dummy_label
+ sharedname = RTEventService_stub
+
+ idlflags += -Wb,stub_export_macro=RTEVENTSERVICE_STUB_Export -Wb,stub_export_include=RTEventService_stub_export.h -Wb,skel_export_macro=RTEVENTSERVICE_SVNT_Export -Wb,skel_export_include=RTEventService_svnt_export.h
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ libs += BasicSP_stub TAO_RTEvent
+ dynamicflags = RTEVENTSERVICE_STUB_BUILD_DLL
+
+ IDL_Files {
+ RTEventService.idl
+ }
+
+ Source_Files {
+ RTEventServiceC.cpp
+ }
+}
+
+project(RTEventService_svnt) : ciao_servant {
+ after += RTEventService_stub BasicSP_stub
+ requires += dummy_label
+ sharedname = RTEventService_svnt
+ libs += RTEventService_stub BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=RTEVENTSERVICE_SVNT_Export -Wb,export_include=RTEventService_svnt_export.h
+ dynamicflags = RTEVENTSERVICE_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ RTEventService.cidl
+ }
+
+ IDL_Files {
+ RTEventServiceE.idl
+ }
+
+ Source_Files {
+ RTEventServiceEC.cpp
+ RTEventServiceS.cpp
+ RTEventService_svnt.cpp
+ }
+}
+
+
+project(RTEventService_exec) : ciao_component {
+ after += RTEventService_svnt
+ requires += dummy_label
+ sharedname = RTEventService_exec
+ libs += RTEventService_stub RTEventService_svnt BasicSP_stub BasicSP_svnt TAO_RTEvent
+ libpaths += ..,..\..\..\..\..\..\lib,..\..\..\..\..\tao\IFR_Client,..\..\..\..\..\tao\Valuetype,..\..\..\..\..\tao,..\..\..\..\..\..\ace,..\..\..\..\..\orbsvcs\orbsvcs,..\..\..\..\..\tao\PortableServer,..\..\..\..\..\tao\IORInterceptor,..\..\..\..\..\tao\ObjRefTemplate,..\..\..\..\..\..\ACEXML\parser\parser,..\..\..\..\..\..\ACEXML\common,..\..\..\..\..\tao\IORTable
+ idlflags += -Wb,export_macro=RTEVENTSERVICE_EXEC_Export -Wb,export_include=RTEventService_exec_export.h
+ dynamicflags = RTEVENTSERVICE_EXEC_BUILD_DLL
+
+ IDL_Files {
+ RTEventServiceEI.idl
+ }
+
+ Source_Files {
+ RTEventServiceES.cpp
+ RTEventServiceEIC.cpp
+ RTEventServiceEIS.cpp
+ RTEventService_exec.cpp
+ }
+}
+