summaryrefslogtreecommitdiff
path: root/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor
diff options
context:
space:
mode:
Diffstat (limited to 'modules/CIAO/docs/tutorials/Quoter/Simple/Distributor')
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl21
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp115
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl42
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc88
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp358
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h258
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h54
-rw-r--r--modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h54
9 files changed, 1044 insertions, 0 deletions
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl
new file mode 100644
index 00000000000..53268e84569
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cidl
@@ -0,0 +1,21 @@
+//$Id$
+//Distributor.cidl,v 1.0
+/**
+ * @file Distributor.cidl
+ *
+ * @author ming xiong <xiongm@isis.vanderbilt.edu>
+ */
+
+#ifndef DISTRIBUTOR_CIDL
+#define DISTRIBUTOR_CIDL
+
+#include "Distributor.idl"
+
+composition session StockDistributor_Impl {
+ home executor StockDistributorHome_Exec {
+ implements Stock::StockDistributorHome;
+ manages StockDistributor_Exec;
+ };
+};
+
+#endif /* DISTRIBUTOR_CIDL */
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp
new file mode 100644
index 00000000000..d99fde85c7c
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.cpp
@@ -0,0 +1,115 @@
+//$Id$
+/*
+ * @file Distributor.cpp
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+
+#include "DistributorC.h"
+#include "ace/streams.h"
+#include "ace/Get_Opt.h"
+
+const char *distributor_ior = "file://Distributor.ior";
+int rate = 2;
+int turn_on = 1;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "k:r:of");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'k':
+ distributor_ior = get_opts.opt_arg ();
+ break;
+
+ case 'o':
+ turn_on = 1;
+ break;
+
+ case 'f':
+ turn_on = 0;
+ break;
+
+ case 'r':
+ rate = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s\n"
+ "-o (Start the distribution service)\n"
+ "-f (Stop the distribution service)\n"
+ "-k <Distributor IOR> (default is file:\\distributor.ior) \n"
+ "-r <broadcast frequency in Hertz> (default is 2)\n"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ }
+
+ return 0;
+}
+
+
+int main (int argc, char* argv[])
+{
+ try
+ {
+ // initialize the ORB
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv,"");
+
+ if (parse_args (argc, argv) != 0)
+ {
+ return -1;
+ }
+
+ // create the factory object reference,
+ CORBA::Object_var distributor_obj =
+ orb->string_to_object (distributor_ior);
+
+ // downcast the object reference to the appropriate type
+ Stock::StockDistributor_var distributor =
+ Stock::StockDistributor::_narrow (distributor_obj.in ());
+
+ if (CORBA::is_nil (distributor.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to acquire 'Distributor' objref\n"),
+ -1);
+ }
+
+ if (turn_on)
+ {
+ distributor->rate (rate);
+
+ ACE_DEBUG ((LM_DEBUG, "Start up the Distribution service\n"));
+
+ distributor->start ();
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG, "Stop the Distribution service\n"));
+
+ distributor->stop ();
+ }
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Who is the culprit \n");
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Uncaught CORBA exception\n"),
+ 1);
+ }
+
+ return 0;
+}
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl
new file mode 100644
index 00000000000..393f0fa94c1
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.idl
@@ -0,0 +1,42 @@
+//$Id$
+
+#include "../Stock_Base/Stock_Base.idl"
+
+module Stock
+{
+ /**
+ * @class Trigger
+ *
+ * @brief supported interface
+ */
+ interface Trigger {
+ /// Start the real-time monitoring service
+ void start ();
+ /// Stop the real-time monitoring service
+ void stop ();
+ };
+
+
+ /**
+ * @class StockDistributor
+ *
+ * @brief component
+ */
+ component StockDistributor supports Trigger
+ {
+ publishes StockName notify_out;
+ provides StockQuoter push_quoter;
+ attribute long rate;
+ };
+
+
+ /**
+ * @class StockDistributorHome
+ *
+ * @brief home for StockDistributor component
+ */
+ home StockDistributorHome manages StockDistributor
+ {
+ };
+
+};
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc
new file mode 100644
index 00000000000..aad6ad54195
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor.mpc
@@ -0,0 +1,88 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl -p Stock_Base Distributor"
+
+project(Stock_Base_Distributor_stub): ciao_client_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_stub
+ sharedname = Distributor_stub
+ idlflags -= -GT
+ idlflags += -St \
+ -Wb,stub_export_macro=DISTRIBUTOR_STUB_Export \
+ -Wb,stub_export_include=Distributor_stub_export.h \
+ -Wb,skel_export_macro=DISTRIBUTOR_SVNT_Export \
+ -Wb,skel_export_include=Distributor_svnt_export.h
+ dynamicflags = DISTRIBUTOR_STUB_BUILD_DLL
+
+ libs += Stock_Base_stub
+
+ IDL_Files {
+ Distributor.idl
+ }
+
+ Source_Files {
+ DistributorC.cpp
+ }
+}
+
+project(Stock_Base_Distributor_svnt) : ciao_servant_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_skel Stock_Base_Distributor_stub
+ sharedname = Distributor_svnt
+ libs += Distributor_stub Stock_Base_stub Stock_Base_skel
+
+ idlflags -= -GT
+ idlflags += -SS -St \
+ -Wb,export_macro=DISTRIBUTOR_SVNT_Export \
+ -Wb,export_include=Distributor_svnt_export.h
+ dynamicflags = DISTRIBUTOR_SVNT_BUILD_DLL
+
+ CIDL_Files {
+ Distributor.cidl
+ }
+
+ IDL_Files {
+ DistributorE.idl
+ }
+
+ Source_Files {
+ DistributorEC.cpp
+ DistributorS.cpp
+ Distributor_svnt.cpp
+ }
+}
+
+
+project(Stock_Base_Distributor_exec) : ciao_component_dnc {
+ avoids += ace_for_tao
+ after += Stock_Base_Distributor_svnt
+ sharedname = Distributor_exec
+ libs += Distributor_stub \
+ Distributor_svnt \
+ Stock_Base_stub \
+ Stock_Base_skel
+
+ dynamicflags = DISTRIBUTOR_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Distributor_exec.cpp
+ }
+}
+
+
+project (Stock_Distributor) : ciao_client_dnc, valuetype{
+ avoids += ace_for_tao
+ exename = Distributor
+ after += Stock_Base_Distributor_stub
+ libs += Distributor_stub Stock_Base_stub
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Distributor.cpp
+ }
+}
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp
new file mode 100644
index 00000000000..1eaafa0027d
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.cpp
@@ -0,0 +1,358 @@
+//$Id$
+/*
+ * @file Distributor_exec.cpp
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+#include "Distributor_exec.h"
+#include "ciao/CIAO_common.h"
+#include "ace/Reactor.h"
+
+
+namespace CIDL_StockDistributor_Impl
+{
+
+ // initialze the stock values
+ CORBA::Long
+ StockDistributor_exec_i::ibm_ = 100;
+
+ CORBA::Long
+ StockDistributor_exec_i::msft_ = 101;
+
+ //==================================================================
+ // C L A S S: pulse_Generator
+ //==================================================================
+
+ pulse_Generator::pulse_Generator (StockDistributor_exec_i *callback)
+ : active_ (0),
+ pulse_callback_ (callback)
+ {
+ // initialize the reactor
+ this->reactor (ACE_Reactor::instance ());
+ }
+
+ pulse_Generator::~pulse_Generator ()
+ {
+ }
+
+ int
+ pulse_Generator::open_h ()
+ {
+ // convert the task into a active object that runs in separate thread
+ return this->activate ();
+ }
+
+ int
+ pulse_Generator::close_h ()
+ {
+ this->reactor ()->end_reactor_event_loop ();
+
+ // wait for all threads in the task to exit before it returns
+ return this->wait ();
+ }
+
+ int
+ pulse_Generator::start (CORBA::Long hertz)
+ {
+ // return if not valid
+ if (hertz == 0 || this->active_ != 0)
+ {
+ return -1;
+ }
+
+ // calculate the interval time
+ long usec = 1000000 / hertz;
+
+ if (this->reactor ()->schedule_timer (this,
+ 0,
+ ACE_Time_Value (0, usec),
+ ACE_Time_Value (0, usec)) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to setup Timer\n"),
+ -1);
+
+ }
+
+ this->active_ = 1;
+ return 0;
+ }
+
+ int
+ pulse_Generator::stop (void)
+ {
+ // return if not valid.
+ if (this->active_ == 0)
+ {
+ return -1;
+ }
+ // cancle the timer
+ this->reactor ()->cancel_timer (this);
+ this->active_ = 0;
+ return 0;
+ }
+
+ int
+ pulse_Generator::active (void)
+ {
+ return this->active_;
+ }
+
+ int
+ pulse_Generator::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
+ pulse_Generator::handle_timeout (const ACE_Time_Value &,
+ const void *)
+ {
+ // Notify the subscribers
+ this->pulse_callback_->push_notify_out ();
+ return 0;
+ }
+
+ int
+ pulse_Generator::svc (void)
+ {
+ // define the owner of the reactor thread
+ this->reactor ()->owner (ACE_OS::thr_self ());
+
+ // run event loop to wait for event, and then dispatch them to corresponding handlers
+ this->reactor ()->run_reactor_event_loop ();
+
+ return 0;
+ }
+
+
+
+ //==================================================================
+ // Facet Executor Implementation Class: StockQuoter_exec_i
+ //==================================================================
+
+ ::Stock::StockInfo *
+ StockQuoter_exec_i::get_stock_info (const char *stock_name)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Stock::Invalid_Stock))
+ {
+ if (strcmp (stock_name, "MSFT") == 0)
+ {
+ Stock::StockInfo_var info = new Stock::StockInfo;
+ info->name = CORBA::string_dup ("MSFT");
+ info->high = 10000;
+ info->low = 0;
+ info->last = this->distributor_.msft_; // retrieve the current stock value
+ return info._retn ();
+ }
+ else if (strcmp (stock_name, "IBM") == 0)
+ {
+ Stock::StockInfo_var info = new Stock::StockInfo;
+ info->name = CORBA::string_dup ("IBM");
+ info->high = 10000;
+ info->low = 0;
+ info->last = this->distributor_.ibm_; // retrieve the current stock value
+ return info._retn ();
+ }
+ else
+ {
+ ACE_THROW_RETURN (Stock::Invalid_Stock (), 0);
+ }
+ }
+
+ //==================================================================
+ // Component Executor Implementation Class: StockDistributor_exec_i
+ //==================================================================
+
+ StockDistributor_exec_i::StockDistributor_exec_i (void)
+ : rate_ (0), pulser_ (this)
+ {
+ }
+
+ StockDistributor_exec_i::~StockDistributor_exec_i (void)
+ {
+ }
+
+ // Supported or inherited operations.
+
+ void
+ StockDistributor_exec_i::start ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (this->rate_ == 0 || this->pulser_.active())
+ {
+ throw CORBA::BAD_PARAM ();
+ }
+
+ this->pulser_.start (this->rate_);
+ }
+
+ void
+ StockDistributor_exec_i::stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ if (! this->pulser_.active ())
+ {
+ throw CORBA::BAD_INV_ORDER ();
+ }
+
+ this->pulser_.stop ();
+ }
+
+ // Attribute operations.
+
+ ::CORBA::Long
+ StockDistributor_exec_i::rate ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->rate_;
+ }
+
+ void
+ StockDistributor_exec_i::rate (
+ ::CORBA::Long rate)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->rate_ = rate;
+ }
+
+ // Port operations.
+
+ ::Stock::CCM_StockQuoter_ptr
+ StockDistributor_exec_i::get_push_quoter ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return new StockQuoter_exec_i (*this);
+ }
+
+ void
+ StockDistributor_exec_i::push_notify_out ()
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ this->msft_++;
+ this->ibm_++;
+
+ Stock::StockName_var ev_msft = new OBV_Stock::StockName;
+ ev_msft->name (CORBA::string_dup ("MSFT"));
+ this->context_->push_notify_out (ev_msft.in ());
+
+ Stock::StockName_var ev_ibm = new OBV_Stock::StockName;
+ ev_ibm->name (CORBA::string_dup ("IBM"));
+ this->context_->push_notify_out (ev_ibm.in ());
+ }
+
+ // Operations from Components::SessionComponent
+
+ void
+ StockDistributor_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ this->context_ = StockDistributor_Context::_narrow (ctx);
+
+ if (this->context_ == 0)
+ {
+ throw CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ StockDistributor_exec_i::ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockDistributor_exec_i::ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ void
+ StockDistributor_exec_i::ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Start the active object
+ this->pulser_.open_h ();
+ }
+
+ void
+ StockDistributor_exec_i::ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ // Deactivate the active object
+ this->pulser_.close_h ();
+ }
+
+ void
+ StockDistributor_exec_i::ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ }
+
+ //==================================================================
+ // Home Executor Implementation Class: StockDistributorHome_exec_i
+ //==================================================================
+
+ StockDistributorHome_exec_i::StockDistributorHome_exec_i (void)
+ {
+ }
+
+ StockDistributorHome_exec_i::~StockDistributorHome_exec_i (void)
+ {
+ }
+
+ ::Components::EnterpriseComponent_ptr
+ StockDistributorHome_exec_i::create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException))
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_THROW_EX (
+ retval,
+ StockDistributor_exec_i,
+ CORBA::NO_MEMORY ());
+ return retval;
+ }
+
+ extern "C" DISTRIBUTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createStockDistributorHome_Impl (void)
+ {
+ ::Components::HomeExecutorBase_ptr retval =
+ ::Components::HomeExecutorBase::_nil ();
+
+ ACE_NEW_RETURN (
+ retval,
+ StockDistributorHome_exec_i,
+ ::Components::HomeExecutorBase::_nil ());
+
+ return retval;
+ }
+}
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h
new file mode 100644
index 00000000000..b890eb0365f
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec.h
@@ -0,0 +1,258 @@
+//$Id$
+/*
+ * @file Distributor_exec.h
+ *
+ * @author Ming Xiong <mxiong@dre.vanderbilt.edu>
+ */
+
+
+
+#ifndef CIAO_DISTRIBUTOR_EXEC_H
+#define CIAO_DISTRIBUTOR_EXEC_H
+
+#include /**/ "ace/pre.h"
+#include "ace/Thread_Manager.h"
+#include "ace/Task.h"
+
+
+#include "Distributor_svnt.h"
+#include "DistributorEC.h"
+#include "Distributor_exec_export.h"
+
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/LocalObject.h"
+
+namespace CIDL_StockDistributor_Impl
+{
+ class StockDistributor_exec_i;
+
+ /**
+ * @class StockQuoter_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockQuoter interface. We use this interface
+ * to acquire the information of the stock
+ */
+ class DISTRIBUTOR_EXEC_Export StockQuoter_exec_i
+ : public virtual ::Stock::CCM_StockQuoter,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockQuoter_exec_i (StockDistributor_exec_i &distributor)
+ :distributor_ (distributor)
+ {
+ }
+
+ // Operations from ::Stock::StockQuoter
+
+ virtual ::Stock::StockInfo *
+ get_stock_info (
+ const char * stock_name)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Stock::Invalid_Stock));
+
+ /// User defined
+
+ private:
+ /// Maintains a handle to the distributor so that the quoter can refer to it for latest quote
+ StockDistributor_exec_i &distributor_;
+ };
+
+ class StockDistributor_exec_i;
+
+ /**
+ * @class pulse generator
+ *
+ * @brief an active object used by StockDistributor to perform periodical pulse generation
+ *
+ */
+ class pulse_Generator : public ACE_Task_Base
+ {
+ public:
+ pulse_Generator (StockDistributor_exec_i *callback);
+
+ ~pulse_Generator ();
+
+ /// Hook method that performs application-defined initialization activities
+ int open_h (void);
+
+ /// Hook method that performs application-defined destruction activites
+ int close_h (void);
+
+ /// appliation-defined method for starting the pulse-generation service
+ int start (CORBA::Long hertz);
+
+ /// application-defined method for stopping the pulse-generation service
+ int stop (void);
+
+ /// Indicate whether the current object is active
+ int active (void);
+
+ /// Handle the timeout.
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+ /// Called when timer handler is removed.
+ virtual int handle_close (ACE_HANDLE handle,
+ ACE_Reactor_Mask close_mask);
+
+ /// Hook methods implemnting the task's service processing,
+ /// invoked by all threads activated by activate () method
+ virtual int svc (void);
+
+ private:
+ /// Tracking whether we are actively generating pulse or not.
+ int active_;
+
+ /// Maintains a handle that actually process the event
+ StockDistributor_exec_i *pulse_callback_;
+
+ };
+
+
+ /**
+ * @class StockDistributor_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockDistributor component
+ */
+ class DISTRIBUTOR_EXEC_Export StockDistributor_exec_i
+ : public virtual StockDistributor_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockDistributor_exec_i (void);
+ virtual ~StockDistributor_exec_i (void);
+
+ // Supported or inherited operations.
+
+ virtual void
+ start ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ stop ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Attribute operations.
+
+ virtual ::CORBA::Long
+ rate ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void
+ rate (
+ ::CORBA::Long)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Port operations.
+
+ virtual ::Stock::CCM_StockQuoter_ptr
+ get_push_quoter ()
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Operations from Components::SessionComponent
+
+ virtual void
+ set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_preactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ciao_postactivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_activate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_passivate ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ virtual void
+ ccm_remove ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+
+ protected:
+ StockDistributor_Context *context_;
+
+ /// User defined members
+ public:
+
+ /// push event to all subscribers
+ void push_notify_out ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException
+ ));
+
+ private:
+ /// pulse generation rate
+ CORBA::Long rate_;
+
+ /// pulser object
+ pulse_Generator pulser_;
+
+ /// "real-time" stock value
+ static CORBA::Long msft_;
+
+ /// "real-tiime" stock value
+ static CORBA::Long ibm_;
+
+ friend class StockQuoter_exec_i;
+ };
+
+
+ /**
+ * @class StockDistributorHome_exec_i
+ *
+ * @brief Executor implementation
+ *
+ * This class implements Stock::StockDistributorHome
+ */
+ class DISTRIBUTOR_EXEC_Export StockDistributorHome_exec_i
+ : public virtual StockDistributorHome_Exec,
+ public virtual TAO_Local_RefCounted_Object
+ {
+ public:
+ StockDistributorHome_exec_i (void);
+ virtual ~StockDistributorHome_exec_i (void);
+
+ virtual ::Components::EnterpriseComponent_ptr
+ create ()
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException,
+ ::Components::CCMException));
+ };
+
+ extern "C" DISTRIBUTOR_EXEC_Export ::Components::HomeExecutorBase_ptr
+ createStockDistributorHome_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* CIAO_DISTRIBUTOR_EXEC_H */
+
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h
new file mode 100644
index 00000000000..a3509e015da
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_exec_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISTRIBUTOR_EXEC
+// ------------------------------
+#ifndef DISTRIBUTOR_EXEC_EXPORT_H
+#define DISTRIBUTOR_EXEC_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (DISTRIBUTOR_EXEC_HAS_DLL)
+# define DISTRIBUTOR_EXEC_HAS_DLL 1
+#endif /* ! DISTRIBUTOR_EXEC_HAS_DLL */
+
+#if defined (DISTRIBUTOR_EXEC_HAS_DLL) && (DISTRIBUTOR_EXEC_HAS_DLL == 1)
+# if defined (DISTRIBUTOR_EXEC_BUILD_DLL)
+# define DISTRIBUTOR_EXEC_Export ACE_Proper_Export_Flag
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISTRIBUTOR_EXEC_BUILD_DLL */
+# define DISTRIBUTOR_EXEC_Export ACE_Proper_Import_Flag
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISTRIBUTOR_EXEC_BUILD_DLL */
+#else /* DISTRIBUTOR_EXEC_HAS_DLL == 1 */
+# define DISTRIBUTOR_EXEC_Export
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARATION(T)
+# define DISTRIBUTOR_EXEC_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISTRIBUTOR_EXEC_HAS_DLL == 1 */
+
+// Set DISTRIBUTOR_EXEC_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISTRIBUTOR_EXEC_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISTRIBUTOR_EXEC_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISTRIBUTOR_EXEC_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISTRIBUTOR_EXEC_NTRACE */
+
+#if (DISTRIBUTOR_EXEC_NTRACE == 1)
+# define DISTRIBUTOR_EXEC_TRACE(X)
+#else /* (DISTRIBUTOR_EXEC_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISTRIBUTOR_EXEC_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISTRIBUTOR_EXEC_NTRACE == 1) */
+
+#endif /* DISTRIBUTOR_EXEC_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h
new file mode 100644
index 00000000000..1126c5bc355
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_stub_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISTRIBUTOR_STUB
+// ------------------------------
+#ifndef DISTRIBUTOR_STUB_EXPORT_H
+#define DISTRIBUTOR_STUB_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (DISTRIBUTOR_STUB_HAS_DLL)
+# define DISTRIBUTOR_STUB_HAS_DLL 1
+#endif /* ! DISTRIBUTOR_STUB_HAS_DLL */
+
+#if defined (DISTRIBUTOR_STUB_HAS_DLL) && (DISTRIBUTOR_STUB_HAS_DLL == 1)
+# if defined (DISTRIBUTOR_STUB_BUILD_DLL)
+# define DISTRIBUTOR_STUB_Export ACE_Proper_Export_Flag
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISTRIBUTOR_STUB_BUILD_DLL */
+# define DISTRIBUTOR_STUB_Export ACE_Proper_Import_Flag
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISTRIBUTOR_STUB_BUILD_DLL */
+#else /* DISTRIBUTOR_STUB_HAS_DLL == 1 */
+# define DISTRIBUTOR_STUB_Export
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARATION(T)
+# define DISTRIBUTOR_STUB_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISTRIBUTOR_STUB_HAS_DLL == 1 */
+
+// Set DISTRIBUTOR_STUB_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISTRIBUTOR_STUB_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISTRIBUTOR_STUB_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISTRIBUTOR_STUB_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISTRIBUTOR_STUB_NTRACE */
+
+#if (DISTRIBUTOR_STUB_NTRACE == 1)
+# define DISTRIBUTOR_STUB_TRACE(X)
+#else /* (DISTRIBUTOR_STUB_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISTRIBUTOR_STUB_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISTRIBUTOR_STUB_NTRACE == 1) */
+
+#endif /* DISTRIBUTOR_STUB_EXPORT_H */
+
+// End of auto generated file.
diff --git a/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h
new file mode 100644
index 00000000000..78debd1c32b
--- /dev/null
+++ b/modules/CIAO/docs/tutorials/Quoter/Simple/Distributor/Distributor_svnt_export.h
@@ -0,0 +1,54 @@
+
+// -*- C++ -*-
+// $Id$
+// Definition for Win32 Export directives.
+// This file is generated automatically by generate_export_file.pl DISTRIBUTOR_SVNT
+// ------------------------------
+#ifndef DISTRIBUTOR_SVNT_EXPORT_H
+#define DISTRIBUTOR_SVNT_EXPORT_H
+
+#include "ace/config-all.h"
+
+#if !defined (DISTRIBUTOR_SVNT_HAS_DLL)
+# define DISTRIBUTOR_SVNT_HAS_DLL 1
+#endif /* ! DISTRIBUTOR_SVNT_HAS_DLL */
+
+#if defined (DISTRIBUTOR_SVNT_HAS_DLL) && (DISTRIBUTOR_SVNT_HAS_DLL == 1)
+# if defined (DISTRIBUTOR_SVNT_BUILD_DLL)
+# define DISTRIBUTOR_SVNT_Export ACE_Proper_Export_Flag
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# else /* DISTRIBUTOR_SVNT_BUILD_DLL */
+# define DISTRIBUTOR_SVNT_Export ACE_Proper_Import_Flag
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+# endif /* DISTRIBUTOR_SVNT_BUILD_DLL */
+#else /* DISTRIBUTOR_SVNT_HAS_DLL == 1 */
+# define DISTRIBUTOR_SVNT_Export
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARATION(T)
+# define DISTRIBUTOR_SVNT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
+#endif /* DISTRIBUTOR_SVNT_HAS_DLL == 1 */
+
+// Set DISTRIBUTOR_SVNT_NTRACE = 0 to turn on library specific tracing even if
+// tracing is turned off for ACE.
+#if !defined (DISTRIBUTOR_SVNT_NTRACE)
+# if (ACE_NTRACE == 1)
+# define DISTRIBUTOR_SVNT_NTRACE 1
+# else /* (ACE_NTRACE == 1) */
+# define DISTRIBUTOR_SVNT_NTRACE 0
+# endif /* (ACE_NTRACE == 1) */
+#endif /* !DISTRIBUTOR_SVNT_NTRACE */
+
+#if (DISTRIBUTOR_SVNT_NTRACE == 1)
+# define DISTRIBUTOR_SVNT_TRACE(X)
+#else /* (DISTRIBUTOR_SVNT_NTRACE == 1) */
+# if !defined (ACE_HAS_TRACE)
+# define ACE_HAS_TRACE
+# endif /* ACE_HAS_TRACE */
+# define DISTRIBUTOR_SVNT_TRACE(X) ACE_TRACE_IMPL(X)
+# include "ace/Trace.h"
+#endif /* (DISTRIBUTOR_SVNT_NTRACE == 1) */
+
+#endif /* DISTRIBUTOR_SVNT_EXPORT_H */
+
+// End of auto generated file.