diff options
Diffstat (limited to 'modules/CIAO/docs/static_config_example.html')
-rw-r--r-- | modules/CIAO/docs/static_config_example.html | 1353 |
1 files changed, 1353 insertions, 0 deletions
diff --git a/modules/CIAO/docs/static_config_example.html b/modules/CIAO/docs/static_config_example.html new file mode 100644 index 00000000000..5e8c806e2cd --- /dev/null +++ b/modules/CIAO/docs/static_config_example.html @@ -0,0 +1,1353 @@ +<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" + content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Venkita Subramonian"> + <meta name="GENERATOR" + content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]"> + <title>BasicSP example using CIAO Static Configurator</title> +<!-- $Id$ --> +</head> +<body> +This example illustrates +how to use the CIAO static configurator for building applications +statically. +For an example using RTCORBA policies, see <a + href="static_config_rtexample.html">BasicSP with RTCORBA extensions</a>. +From the <a href="../examples/OEP/BasicSP">BasicSP</a> directory do +the +following. +<p><b><tt>> cd descriptors</tt></b> +<br> +<b><tt>> $CIAO_ROOT/tools/static_configurator/Static_Assembly_Parser +-a BasicSP.cad</tt></b> +</p> +<p>The following files are generated - +</p> +<p><a href="#Static_Assembly_Config.h">Static_Assembly_Config.h</a> +<br> +<a href="#Static_CCM_App.cpp">Static_CCM_App.cpp</a> +<br> +<a href="#Static_CCM_App.mpc">Static_CCM_App.mpc</a> +</p> +<p><a href="#Static_Assembly_Config.h">Static_Assembly_Config.h</a> +contains +the intermediate representation of all the parsed component and +assembly +information obtained from the XML files. <a href="#Static_CCM_App.cpp">Static_CCM_App.cpp</a> +contains the main driver application. Here a runtime <a + href="#static%20config%20engine">static +configuration engine</a> is used to create containers, homes, +components, +etc and then establish necessary connections between the components. In +the BasicSP example, an external controller (see <tt><a + href="../examples/OEP/BasicSP/README">$CIAO_ROOT/examples/OEP/BasicSP/README</a></tt>) +is used to start or stop a pulser. The generated main driver +application +(Static_CCM_App.cpp) is <a href="#Modified%20Static_CCM_App.cpp">modified</a> +to add code to trigger the pulser object on. The generated .mpc file is +<a href="#Modified%20Static_CCM_App.mpc">modified</a> +to add all other necessary files so that the application can be built +statically. +Note that the static configurator only generates only certain file +names +in the .mpc file. These filenames are obtained from the XML descriptor +files. All other necessary files have to be added manually as +indicated. +</p> +<p>Now the static build files can be generated by running the mpc +utility. +</p> +<p><b><tt>> cd ..</tt></b> +<br> +<b><tt>> $ACE_ROOT/bin/mpc -static Static_CCM_App.mpc</tt></b> +</p> +<p><a name="Static_Assembly_Config.h"></a><b><u>Static_Assembly_Config.h</u></b> +<br> +<tt><font color="#3333ff">#include "Static_Assembly.h"</font></tt> +</p> +<p><tt><font color="#3333ff">#include "CCM_ContainerC.h"</font></tt> +<br> +<tt><font color="#3333ff">#include "Container_Base.h"</font></tt> +</p> +<p><tt><font color="#3333ff">//Containers</font></tt> +<br> +<tt><font color="#3333ff">CIAO::Static_Config::ContainerAttributes +containers_table_[]=</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> {"", 0}</font></tt> +<br> +<tt><font color="#3333ff">};</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff">extern "C" +::Components::HomeExecutorBase_ptr +createECHome_Impl (void);</font></tt> +<br> +<tt><font color="#3333ff">extern "C" ::PortableServer::Servant +createECHome_Servant</font></tt> +<br> +<tt><font color="#3333ff"> (::Components::HomeExecutorBase_ptr +p,</font></tt> +<br> +<tt><font color="#3333ff"> ::CIAO::Session_Container *c</font></tt> +<br> +<tt><font color="#3333ff"> ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt> +<br> +<tt><font color="#3333ff">extern "C" ::Components::HomeExecutorBase_ptr +createBMDeviceHome_Impl (void);</font></tt> +<br> +<tt><font color="#3333ff">extern "C" ::PortableServer::Servant +createBMDeviceHome_Servant</font></tt> +<br> +<tt><font color="#3333ff"> (::Components::HomeExecutorBase_ptr +p,</font></tt> +<br> +<tt><font color="#3333ff"> ::CIAO::Session_Container *c</font></tt> +<br> +<tt><font color="#3333ff"> ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt> +<br> +<tt><font color="#3333ff">extern "C" ::Components::HomeExecutorBase_ptr +createBMClosedEDHome_Impl (void);</font></tt> +<br> +<tt><font color="#3333ff">extern "C" ::PortableServer::Servant +createBMClosedEDHome_Servant</font></tt> +<br> +<tt><font color="#3333ff"> (::Components::HomeExecutorBase_ptr +p,</font></tt> +<br> +<tt><font color="#3333ff"> ::CIAO::Session_Container *c</font></tt> +<br> +<tt><font color="#3333ff"> ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt> +<br> +<tt><font color="#3333ff">extern "C" ::Components::HomeExecutorBase_ptr +createBMDisplayHome_Impl (void);</font></tt> +<br> +<tt><font color="#3333ff">extern "C" ::PortableServer::Servant +createBMDisplayHome_Servant</font></tt> +<br> +<tt><font color="#3333ff"> (::Components::HomeExecutorBase_ptr +p,</font></tt> +<br> +<tt><font color="#3333ff"> ::CIAO::Session_Container *c</font></tt> +<br> +<tt><font color="#3333ff"> ACE_ENV_ARG_DECL_WITH_DEFAULTS);</font></tt> +<br> +<tt><font color="#3333ff">//Homes</font></tt> +<br> +<tt><font color="#3333ff">CIAO::Static_Config::HomeAttributes +homes_table_[]=</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> {"a_ECHome", +"DCE:3148F760-F2ED-4204-A775-6B972C10E8CB", +"createECHome_Impl", createECHome_Impl, +"DCE:75309233-0E0A-4cfb-B186-3E99F69B1D40", +"createECHome_Servant", createECHome_Servant, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {"a_BMDeviceHome", +"DCE:82C2B032-37F0-4315-A59F-7020D3264E4D", +"createBMDeviceHome_Impl", createBMDeviceHome_Impl, +"DCE:93D254CF-9538-44e8-BB98-AABCD134ADD3", +"createBMDeviceHome_Servant", createBMDeviceHome_Servant, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {"a_BMClosedEDHome", +"DCE:8E6C468D-A39F-46b4-962B-265F1AA8D538", +"createBMClosedEDHome_Impl", createBMClosedEDHome_Impl, +"DCE:CDC06FCA-50FC-43ca-8ECC-BEFBD33FEE78", +"createBMClosedEDHome_Servant", createBMClosedEDHome_Servant, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {"a_BMDisplayHome", +"DCE:8E92655E-CA07-46C8-B127-0F0872A8CC29", +"createBMDisplayHome_Impl", createBMDisplayHome_Impl, +"DCE:D7984625-8561-431d-9927-4E498B317C02", +"createBMDisplayHome_Servant", createBMDisplayHome_Servant, 0, 0 }</font></tt> +<br> +<tt><font color="#3333ff">};</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff">//Components</font></tt> +<br> +<tt><font color="#3333ff">CIAO::Static_Config::ComponentAttributes +components_table_[]=</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> {"a_EC", 0, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {"a_BMDevice", -1, -1, 1 },</font></tt> +<br> +<tt><font color="#3333ff"> {"a_BMClosedED", -1, -1, 2 },</font></tt> +<br> +<tt><font color="#3333ff"> {"a_BMDisplay", -1, -1, 3 }</font></tt> +<br> +<tt><font color="#3333ff">};</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff">//Component Registrations</font></tt> +<br> +<tt><font color="#3333ff">CIAO::Assembly_Placement::componentinstantiation::Register_Info +component_registrations_table_[]=</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Placement::componentinstantiation::COMPONENT, +CIAO::Assembly_Placement::componentinstantiation::IORFILE, "", "ec.ior" +}</font></tt> +<br> +<tt><font color="#3333ff">};</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff">//Connections</font></tt> +<br> +<tt><font color="#3333ff">CIAO::Static_Config::ConnectionAttributes +connections_table_[]=</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::PUBLISHER_CONSUMER, +"", "timeout", 0, 1, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::PUBLISHER_CONSUMER, +"", "data_available", 3, 4, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::PUBLISHER_CONSUMER, +"", "out_avail", 6, 7, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::INTERFACE, +"", "datain", 9, 10, 0, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::INTERFACE, +"", "comp_data", 12, 13, 0, 0 }</font></tt> +<br> +<tt><font color="#3333ff">};</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff">//Resolver Infos</font></tt> +<br> +<tt><font color="#3333ff">CIAO::Static_Config::ResolveInfoAttributes +resolvers_table_[]=</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_EC", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::CONSUMER, +"timeout", 2, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDevice", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDevice", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::CONSUMER, +"in_avail", 5, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::CONSUMER, +"data_ready", 8, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDisplay", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::PROVIDER, +"data_read", 11, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDevice", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMDisplay", -1, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::PROVIDER, +"dataout", 14, 0 },</font></tt> +<br> +<tt><font color="#3333ff"> {CIAO::Assembly_Connection::COMP_IDREF, +"a_BMClosedED", -1, 0 }</font></tt> +<br> +<tt><font color="#3333ff">};</font></tt> +</p> +<p><a name="Static_CCM_App.cpp"></a><b><u>Static_CCM_App.cpp</u></b> +<br> +<tt><font color="#3333ff">#include "ComponentServer_Impl.h"</font></tt> +<br> +<tt><font color="#3333ff">#include "CIAO_ServersC.h"</font></tt> +<br> +<tt><font color="#3333ff">#include "Server_init.h"</font></tt> +<br> +<tt><font color="#3333ff">#include "Static_Configurator.h"</font></tt> +<br> +<tt><font color="#3333ff">#include "ace/SString.h"</font></tt> +<br> +<tt><font color="#3333ff">#include "ace/Get_Opt.h"</font></tt> +</p> +<p><tt><font color="#3333ff">#include "Static_Assembly_Config.h"</font></tt> +</p> +<p><tt><font color="#3333ff">char *ior_file_name_ = "comp_serv.ior";</font></tt> +</p> +<p><tt><font color="#3333ff">int</font></tt> +<br> +<tt><font color="#3333ff">parse_args (int argc, char *argv[])</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> ACE_Get_Opt get_opts (argc, argv, +"k:o:");</font></tt> +<br> +<tt><font color="#3333ff"> int c;</font></tt> +</p> +<p><tt><font color="#3333ff"> while ((c = get_opts ()) != -1)</font></tt> +<br> +<tt><font color="#3333ff"> switch (c)</font></tt> +<br> +<tt><font color="#3333ff"> {</font></tt> +<br> +<tt><font color="#3333ff"> case +'o': +// get the file name to write to</font></tt> +<br> +<tt><font color="#3333ff"> +ior_file_name_ += get_opts.opt_arg ();</font></tt> +<br> +<tt><font color="#3333ff"> break;</font></tt> +</p> +<p><tt><font color="#3333ff"> case +'?': +// display help for use of the server.</font></tt> +<br> +<tt><font color="#3333ff"> default:</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ERROR_RETURN ((LM_ERROR,</font></tt> +<br> +<tt><font color="#3333ff"> +"usage: %s\n"</font></tt> +<br> +<tt><font color="#3333ff"> +"-o <ior_output_file>\n"</font></tt> +<br> +<tt><font color="#3333ff"> +"\n",</font></tt> +<br> +<tt><font color="#3333ff"> +argv [0]),</font></tt> +<br> +<tt><font color="#3333ff"> +-1);</font></tt> +<br> +<tt><font color="#3333ff"> }</font></tt> +</p> +<p><tt><font color="#3333ff"> return 0;</font></tt> +<br> +<tt><font color="#3333ff">}</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff">int</font></tt> +<br> +<tt><font color="#3333ff">main (int argc, char *argv[])</font></tt> +<br> +<tt><font color="#3333ff">{</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_NEW_ENV</font></tt> +<br> +<tt><font color="#3333ff"> {</font></tt> +<br> +<tt><font color="#3333ff"> // Initialize +orb</font></tt> +<br> +<tt><font color="#3333ff"> CORBA::ORB_var +orb = CORBA::ORB_init (argc,</font></tt> +<br> +<tt><font color="#3333ff"> +argv,</font></tt> +<br> +<tt><font color="#3333ff"> +0</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> +CIAO::Server_init +(orb.in ());</font></tt> +</p> +<p><tt><font color="#3333ff"> if +(parse_args +(argc, argv) != 0)</font></tt> +<br> +<tt><font color="#3333ff"> +return -1;</font></tt> +</p> +<p><tt><font color="#3333ff"> // Get +reference +to Root POA.</font></tt> +<br> +<tt><font color="#3333ff"> +CORBA::Object_var +obj</font></tt> +<br> +<tt><font color="#3333ff"> += orb->resolve_initial_references ("RootPOA"</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> +PortableServer::POA_var +poa</font></tt> +<br> +<tt><font color="#3333ff"> += PortableServer::POA::_narrow (obj.in ()</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> // Activate +POA manager</font></tt> +<br> +<tt><font color="#3333ff"> +PortableServer::POAManager_var +mgr</font></tt> +<br> +<tt><font color="#3333ff"> += poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> +mgr->activate +(ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> +CIAO::ComponentServer_Impl +*comserv_servant;</font></tt> +</p> +<p><tt><font color="#3333ff"> +CIAO::Static_Configurator +configurator;</font></tt> +<br> +<tt><font color="#3333ff"> int +containers_table_size +=</font></tt> +<br> +<tt><font color="#3333ff"> +sizeof +(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes);</font></tt> +<br> +<tt><font color="#3333ff"> int +homes_table_size +=</font></tt> +<br> +<tt><font color="#3333ff"> +sizeof (homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes);</font></tt> +<br> +<tt><font color="#3333ff"> int +components_table_size +=</font></tt> +<br> +<tt><font color="#3333ff"> +sizeof +(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes);</font></tt> +<br> +<tt><font color="#3333ff"> int +component_registrations_table_size +=</font></tt> +<br> +<tt><font color="#3333ff"> +sizeof +(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info);</font></tt> +<br> +<tt><font color="#3333ff"> int +connections_table_size +=</font></tt> +<br> +<tt><font color="#3333ff"> +sizeof +(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes);</font></tt> +<br> +<tt><font color="#3333ff"> int +resolvers_table_size +=</font></tt> +<br> +<tt><font color="#3333ff"> +sizeof +(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes);</font></tt> +</p> +<p><tt><font color="#3333ff"> +CIAO::HOMECREATOR_FUNCPTR_MAP +home_creator_fptr_map;</font></tt> +<br> +<tt><font color="#3333ff"> +CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP +homesvnt_creator_fptr_map;</font></tt> +<br> +<tt><font color="#3333ff"> +CIAO::Static_Config_EntryPoints_Maps +maps;</font></tt> +<br> +<tt><font color="#3333ff"> +maps.home_creator_funcptr_map_ += &home_creator_fptr_map;</font></tt> +<br> +<tt><font color="#3333ff"> +maps.home_servant_creator_funcptr_map_ += &homesvnt_creator_fptr_map;</font></tt> +</p> +<p><tt><font color="#3333ff"> int i=0;</font></tt> +<br> +<tt><font color="#3333ff"> for (i=0; +i<homes_table_size; ++i)</font></tt> +<br> +<tt><font color="#3333ff"> +{</font></tt> +<br> +<tt><font color="#3333ff"> +home_creator_fptr_map.bind (homes_table_[i].executor_entrypt_,</font></tt> +<br> +<tt><font color="#3333ff"> +homes_table_[i].executor_fptr_);</font></tt> +</p> +<p><tt><font color="#3333ff"> +homesvnt_creator_fptr_map.bind (homes_table_[i].servant_entrypt_,</font></tt> +<br> +<tt><font color="#3333ff"> +homes_table_[i].servant_fptr_);</font></tt> +<br> +<tt><font color="#3333ff"> +}</font></tt> +</p> +<p><tt><font color="#3333ff"> +ACE_NEW_RETURN +(comserv_servant,</font></tt> +<br> +<tt><font color="#3333ff"> +CIAO::ComponentServer_Impl (orb.in (),</font></tt> +<br> +<tt><font color="#3333ff"> +poa.in (),</font></tt> +<br> +<tt><font color="#3333ff"> +1,</font></tt> +<br> +<tt><font color="#3333ff"> +&maps),</font></tt> +<br> +<tt><font color="#3333ff"> +-1);</font></tt> +</p> +<p><tt><font color="#3333ff"> +PortableServer::ServantBase_var +safe_servant (comserv_servant);</font></tt> +</p> +<p><tt><font color="#3333ff"> +Components::ConfigValues +configs;</font></tt> +</p> +<p><tt><font color="#3333ff"> +comserv_servant->init +(configs</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> // +Configuring +ComponentServer.</font></tt> +<br> +<tt><font color="#3333ff"> +PortableServer::ObjectId_var +cs_oid</font></tt> +<br> +<tt><font color="#3333ff"> += poa->activate_object (comserv_servant</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> obj = +poa->id_to_reference +(cs_oid.in ()</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> +Components::Deployment::ComponentServer_var +comserv_obj =</font></tt> +<br> +<tt><font color="#3333ff"> +Components::Deployment::ComponentServer::_narrow (obj.in ()</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><tt><font color="#3333ff"> if +(CORBA::is_nil +(comserv_obj.in ()))</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ERROR_RETURN ((LM_ERROR, "Unable to activate ComponentServer +object\n"), +-1);</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff"> +Components::Deployment::ServerActivator_var +activator;</font></tt> +<br> +<tt><font color="#3333ff"> +Components::ConfigValues_var +config = new Components::ConfigValues;</font></tt> +</p> +<p><tt><font color="#3333ff"> +comserv_servant->set_objref +(activator.in (),</font></tt> +<br> +<tt><font color="#3333ff"> +config,</font></tt> +<br> +<tt><font color="#3333ff"> +comserv_obj.in ()</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK;</font></tt> +</p> +<p><a name="static config engine"></a><tt><font color="#ff0000">configurator.configure +(orb.in (),</font></tt> +<br> +<tt><font color="#ff0000"> +comserv_obj.in (),</font></tt> +<br> +<tt><font color="#ff0000"> +containers_table_,</font></tt> +<br> +<tt><font color="#ff0000"> +containers_table_size,</font></tt> +<br> +<tt><font color="#ff0000"> +homes_table_,</font></tt> +<br> +<tt><font color="#ff0000"> +homes_table_size,</font></tt> +<br> +<tt><font color="#ff0000"> +components_table_,</font></tt> +<br> +<tt><font color="#ff0000"> +components_table_size,</font></tt> +<br> +<tt><font color="#ff0000"> +component_registrations_table_,</font></tt> +<br> +<tt><font color="#ff0000"> +component_registrations_table_size,</font></tt> +<br> +<tt><font color="#ff0000"> +connections_table_,</font></tt> +<br> +<tt><font color="#ff0000"> +connections_table_size,</font></tt> +<br> +<tt><font color="#ff0000"> +resolvers_table_,</font></tt> +<br> +<tt><font color="#ff0000"> +resolvers_table_size);</font></tt> +</p> +<p><tt><font color="#3333ff"> +CORBA::String_var +str = orb->object_to_string (comserv_obj.in ()</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_ENV_ARG_PARAMETER);</font></tt> +</p> +<p><tt><font color="#3333ff"> +CIAO::Utility::write_IOR +(ior_file_name_, str.in ());</font></tt> +<br> +<tt><font color="#3333ff"> ACE_DEBUG +((LM_INFO, "ComponentServer IOR: %s\n", str.in ()));</font></tt> +</p> +<p><tt><font color="#3333ff"> ACE_DEBUG +((LM_DEBUG,</font></tt> +<br> +<tt><font color="#3333ff"> +"Running ComponentServer...\n"));</font></tt> +</p> +<p><tt><font color="#3333ff"> // Run the +main event loop for the ORB.</font></tt> +<br> +<tt><font color="#3333ff"> orb->run +(ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt> +<br> +<tt><font color="#3333ff"> ACE_TRY_CHECK</font></tt> +<br> +<tt><font color="#3333ff"> }</font></tt> +<br> +<tt><font color="#3333ff"> ACE_CATCHANY</font></tt> +<br> +<tt><font color="#3333ff"> {</font></tt> +<br> +<tt><font color="#3333ff"> +ACE_PRINT_EXCEPTION +(ACE_ANY_EXCEPTION,</font></tt> +<br> +<tt><font color="#3333ff"> +"server::main \n");</font></tt> +<br> +<tt><font color="#3333ff"> return 1;</font></tt> +<br> +<tt><font color="#3333ff"> }</font></tt> +<br> +<tt><font color="#3333ff"> ACE_ENDTRY;</font></tt> +</p> +<p><tt><font color="#3333ff"> return 0;</font></tt> +<br> +<tt><font color="#3333ff">}</font></tt> +</p> +<p><a name="Static_CCM_App.mpc"></a><b><u>Static_CCM_App.mpc</u></b> +<br> +<tt><font color="#3333ff">project(Static_CCM_App) : ciao_server, +ciao_client, +rtcorba, rtportableserver, iortable, acexml {</font></tt> +<br> +<tt><font color="#3333ff">includes += +$(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer</font></tt> +<br> +<tt><font color="#3333ff">includes += +$(ACE_ROOT)/TAO/CIAO/tools/static_configurator</font></tt> +<br> +<tt><font color="#3333ff">libs += CIAO_XML_Helpers Static_Configurator</font></tt> +<br> +<tt><font color="#3333ff">after += CIAO_XML_Helpers Static_Configurator</font></tt> +<br> + +</p> +<p><tt><font color="#3333ff">libs += EC_exec</font></tt> +<br> +<tt><font color="#3333ff">after += EC_exec</font></tt> +<br> +<tt><font color="#3333ff">libs += EC_svnt</font></tt> +<br> +<tt><font color="#3333ff">after += EC_svnt</font></tt> +<br> +<tt><font color="#3333ff">libs += BMDevice_exec</font></tt> +<br> +<tt><font color="#3333ff">after += BMDevice_exec</font></tt> +<br> +<tt><font color="#3333ff">libs += BMDevice_svnt</font></tt> +<br> +<tt><font color="#3333ff">after += BMDevice_svnt</font></tt> +<br> +<tt><font color="#3333ff">libs += BMClosedED_exec</font></tt> +<br> +<tt><font color="#3333ff">after += BMClosedED_exec</font></tt> +<br> +<tt><font color="#3333ff">libs += BMClosedED_svnt</font></tt> +<br> +<tt><font color="#3333ff">after += BMClosedED_svnt</font></tt> +<br> +<tt><font color="#3333ff">libs += BMDisplay_exec</font></tt> +<br> +<tt><font color="#3333ff">after += BMDisplay_exec</font></tt> +<br> +<tt><font color="#3333ff">libs += BMDisplay_svnt</font></tt> +<br> +<tt><font color="#3333ff">after += BMDisplay_svnt</font></tt> +<br> +<tt><font color="#3333ff"> Source_Files {</font></tt> +<br> +<tt><font color="#3333ff"> +Static_CCM_App.cpp</font></tt> +<br> +<tt><font color="#3333ff"> }</font></tt> +</p> +<p><tt><font color="#3333ff"> IDL_Files {</font></tt> +<br> +<tt><font color="#3333ff"> }</font></tt> +<br> +<tt><font color="#3333ff">}</font></tt> +</p> +<p><a name="Modified Static_CCM_App.cpp"></a><b><u>Modified +Static_CCM_App.cpp</u></b> <br> +</p> +<p><small><span style="font-weight: bold;">(Highlighted text is +manually added to the +generated .cpp file)<br> +<br> +</span></small><tt>#include "ComponentServer_Impl.h"</tt> +<br> +<tt>#include "CIAO_ServersC.h"</tt> +<br> +<tt>#include "Server_init.h"</tt> +<br> +<tt>#include "Static_Configurator.h"</tt> +<br> +<tt>#include "ace/SString.h"</tt> +<br> +<tt>#include "ace/Get_Opt.h"</tt> +</p> +<p><tt>#include "Static_Assembly_Config.h"</tt> +</p> +<p><tt>char *ior_file_name_ = "comp_serv.ior";</tt> +<br> +<b><tt><font color="#990000">int rate = 2;</font></tt></b> +</p> +<p><tt>int</tt> +<br> +<tt>parse_args (int argc, char *argv[])</tt> +<br> +<tt>{</tt> +<br> +<tt> ACE_Get_Opt get_opts (argc, argv, "k:o:");</tt> +<br> +<tt> int c;</tt> +</p> +<p><tt> while ((c = get_opts ()) != -1)</tt> +<br> +<tt> switch (c)</tt> +<br> +<tt> {</tt> +<br> +<tt> case 'o': // get the file +name to write to</tt> +<br> +<tt> ior_file_name_ = +get_opts.opt_arg +();</tt> +<br> +<tt> break;</tt> +</p> +<p><tt> case '?': // display help +for +use of the server.</tt> +<br> +<tt> default:</tt> +<br> +<tt> ACE_ERROR_RETURN +((LM_ERROR,</tt> +<br> +<tt> +"usage: %s\n"</tt> +<br> +<tt> +"-o <ior_output_file>\n"</tt> +<br> +<tt> +"\n",</tt> +<br> +<tt> +argv [0]),</tt> +<br> +<tt> +-1);</tt> +<br> +<tt> }</tt> +</p> +<p><tt> return 0;</tt> +<br> +<tt>}</tt> +<br> + +</p> +<p><tt>int</tt> +<br> +<tt>main (int argc, char *argv[])</tt> +<br> +<tt>{</tt> +<br> +<tt> ACE_TRY_NEW_ENV</tt> +<br> +<tt> {</tt> +<br> +<tt> // Initialize orb</tt> +<br> +<tt> CORBA::ORB_var orb = CORBA::ORB_init +(argc,</tt> +<br> +<tt> +argv,</tt> +<br> +<tt> +0</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> CIAO::Server_init (orb.in ());</tt> +</p> +<p><tt> if (parse_args (argc, argv) != 0)</tt> +<br> +<tt> return -1;</tt> +</p> +<p><tt> // Get reference to Root POA.</tt> +<br> +<tt> CORBA::Object_var obj</tt> +<br> +<tt> = +orb->resolve_initial_references +("RootPOA"</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> PortableServer::POA_var poa</tt> +<br> +<tt> = +PortableServer::POA::_narrow +(obj.in ()</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> // Activate POA manager</tt> +<br> +<tt> PortableServer::POAManager_var mgr</tt> +<br> +<tt> = poa->the_POAManager +(ACE_ENV_SINGLE_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> mgr->activate +(ACE_ENV_SINGLE_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> CIAO::ComponentServer_Impl +*comserv_servant;</tt> +</p> +<p><tt> CIAO::Static_Configurator +configurator;</tt> +<br> +<tt> int containers_table_size =</tt> +<br> +<tt> sizeof +(containers_table_)/sizeof(CIAO::Static_Config::ContainerAttributes);</tt> +<br> +<tt> int homes_table_size =</tt> +<br> +<tt> sizeof +(homes_table_)/sizeof(CIAO::Static_Config::HomeAttributes);</tt> +<br> +<tt> int components_table_size =</tt> +<br> +<tt> sizeof +(components_table_)/sizeof(CIAO::Static_Config::ComponentAttributes);</tt> +<br> +<tt> int +component_registrations_table_size +=</tt> +<br> +<tt> sizeof +(component_registrations_table_)/sizeof(CIAO::Assembly_Placement::componentinstantiation::Register_Info);</tt> +<br> +<tt> int connections_table_size =</tt> +<br> +<tt> sizeof +(connections_table_)/sizeof(CIAO::Static_Config::ConnectionAttributes);</tt> +<br> +<tt> int resolvers_table_size =</tt> +<br> +<tt> sizeof +(resolvers_table_)/sizeof(CIAO::Static_Config::ResolveInfoAttributes);</tt> +</p> +<p><tt> CIAO::HOMECREATOR_FUNCPTR_MAP +home_creator_fptr_map;</tt> +<br> +<tt> CIAO::HOMESERVANTCREATOR_FUNCPTR_MAP +homesvnt_creator_fptr_map;</tt> +<br> +<tt> CIAO::Static_Config_EntryPoints_Maps +maps;</tt> +<br> +<tt> maps.home_creator_funcptr_map_ = +&home_creator_fptr_map;</tt> +<br> +<tt> +maps.home_servant_creator_funcptr_map_ += &homesvnt_creator_fptr_map;</tt> +</p> +<p><tt> int i=0;</tt> +<br> +<tt> for (i=0; i<homes_table_size; +++i)</tt> +<br> +<tt> {</tt> +<br> +<tt> +home_creator_fptr_map.bind +(homes_table_[i].executor_entrypt_,</tt> +<br> +<tt> +homes_table_[i].executor_fptr_);</tt> +</p> +<p><tt> +homesvnt_creator_fptr_map.bind +(homes_table_[i].servant_entrypt_,</tt> +<br> +<tt> +homes_table_[i].servant_fptr_);</tt> +<br> +<tt> }</tt> +</p> +<p><tt> ACE_NEW_RETURN (comserv_servant,</tt> +<br> +<tt> +CIAO::ComponentServer_Impl (orb.in (),</tt> +<br> +<tt> +poa.in (),</tt> +<br> +<tt> +1,</tt> +<br> +<tt> +&maps),</tt> +<br> +<tt> +-1);</tt> +</p> +<p><tt> PortableServer::ServantBase_var +safe_servant +(comserv_servant);</tt> +</p> +<p><tt> Components::ConfigValues configs;</tt> +</p> +<p><tt> comserv_servant->init (configs</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> // Configuring ComponentServer.</tt> +<br> +<tt> PortableServer::ObjectId_var cs_oid</tt> +<br> +<tt> = +poa->activate_object +(comserv_servant</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> obj = poa->id_to_reference +(cs_oid.in +()</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> +Components::Deployment::ComponentServer_var +comserv_obj =</tt> +<br> +<tt> +Components::Deployment::ComponentServer::_narrow +(obj.in ()</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> if (CORBA::is_nil (comserv_obj.in +()))</tt> +<br> +<tt> ACE_ERROR_RETURN +((LM_ERROR, +"Unable to activate ComponentServer object\n"), -1);</tt> +<br> + +</p> +<p><tt> +Components::Deployment::ServerActivator_var +activator;</tt> +<br> +<tt> Components::ConfigValues_var config += new Components::ConfigValues;</tt> +</p> +<p><tt> comserv_servant->set_objref +(activator.in +(),</tt> +<br> +<tt> +config,</tt> +<br> +<tt> +comserv_obj.in ()</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK;</tt> +</p> +<p><tt> configurator.configure (orb.in (),</tt> +<br> +<tt> +comserv_obj.in (),</tt> +<br> +<tt> +containers_table_,</tt> +<br> +<tt> +containers_table_size,</tt> +<br> +<tt> +homes_table_,</tt> +<br> +<tt> +homes_table_size,</tt> +<br> +<tt> +components_table_,</tt> +<br> +<tt> +components_table_size,</tt> +<br> +<tt> +component_registrations_table_,</tt> +<br> +<tt> +component_registrations_table_size,</tt> +<br> +<tt> +connections_table_,</tt> +<br> +<tt> +connections_table_size,</tt> +<br> +<tt> +resolvers_table_,</tt> +<br> +<tt> +resolvers_table_size);</tt> +</p> +<p><tt> CORBA::String_var str = +orb->object_to_string +(comserv_obj.in ()</tt> +<br> +<tt> +ACE_ENV_ARG_PARAMETER);</tt> +</p> +<p><tt> CIAO::Utility::write_IOR +(ior_file_name_, +str.in ());</tt> +<br> +<tt> ACE_DEBUG ((LM_INFO, +"ComponentServer +IOR: %s\n", str.in ()));</tt> +</p> +<p><tt> ACE_DEBUG ((LM_DEBUG,</tt> +<br> +<tt> +"Running ComponentServer...\n"));</tt> +</p> +<p><b><tt><font color="#990000"> +CORBA::Object_var +pulser_obj</font></tt></b> +<br> +<b><tt><font color="#990000"> += orb->string_to_object ("file://ec.ior"</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_ENV_ARG_PARAMETER);</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_TRY_CHECK;</font></tt></b> +</p> +<p><b><tt><font color="#990000"> +BasicSP::EC_var +pulser</font></tt></b> +<br> +<b><tt><font color="#990000"> += BasicSP::EC::_narrow (pulser_obj.in ()</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_ENV_ARG_PARAMETER);</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_TRY_CHECK;</font></tt></b> +</p> +<p><b><tt><font color="#990000"> if +(CORBA::is_nil +(pulser.in ()))</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_ERROR_RETURN ((LM_ERROR, "Unable to acquire 'EC' objref\n"), -1);</font></tt></b> +</p> +<p><b><tt><font color="#990000"> +pulser->hertz +(rate</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_ENV_ARG_PARAMETER);</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_TRY_CHECK;</font></tt></b> +</p> +<p><b><tt><font color="#990000"> +ACE_DEBUG +((LM_DEBUG, "Start up the Event services\n"));</font></tt></b> +</p> +<p><b><tt><font color="#990000"> +pulser->start +(ACE_ENV_SINGLE_ARG_PARAMETER);</font></tt></b> +<br> +<b><tt><font color="#990000"> +ACE_TRY_CHECK;</font></tt></b> +</p> +<p><tt> // Run the main event loop for +the +ORB.</tt> +<br> +<tt> orb->run +(ACE_ENV_SINGLE_ARG_PARAMETER);</tt> +<br> +<tt> ACE_TRY_CHECK</tt> +<br> +<tt> }</tt> +<br> +<tt> ACE_CATCHANY</tt> +<br> +<tt> {</tt> +<br> +<tt> ACE_PRINT_EXCEPTION +(ACE_ANY_EXCEPTION,</tt> +<br> +<tt> +"server::main \n");</tt> +<br> +<tt> return 1;</tt> +<br> +<tt> }</tt> +<br> +<tt> ACE_ENDTRY;</tt> +</p> +<p><tt> return 0;</tt> +<br> +<tt>}</tt> +</p> +<p><a name="Modified Static_CCM_App.mpc"></a><b><u>Modified +Static_CCM_App.mpc</u></b> <br> +</p> +<p><small><span style="font-weight: bold;">(Highlighted text is +manually added to the +generated .cpp file)<br> +<br> +</span></small><tt>project(Static_CCM_App) : ciao_server, ciao_client, +rtcorba, +rtportableserver, +iortable, acexml {</tt> +<br> +<tt>includes += $(ACE_ROOT)/TAO/CIAO/tools/Assembly_Deployer</tt> +<br> +<tt>includes += $(ACE_ROOT)/TAO/CIAO/tools/static_configurator</tt> +<br> +<tt>libs += CIAO_XML_Helpers Static_Configurator</tt> +<br> +<tt>after += CIAO_XML_Helpers Static_Configurator</tt> +</p> +<p><b><tt><font color="#990000">libs += BasicSP_stub BasicSP_svnt</font></tt></b> +<br> +<b><tt><font color="#990000">after += BasicSP_stub BasicSP_svnt</font></tt></b> +<br> +<tt>libs += EC_exec</tt> +<br> +<tt>after += EC_exec</tt> +<br> +<tt>libs += EC_svnt <b><font color="#990000">EC_stub</font></b></tt> +<br> +<tt>after += EC_svnt <b><font color="#990000">EC_stub</font></b></tt> +<br> +<tt>libs += BMDevice_exec</tt> +<br> +<tt>after += BMDevice_exec</tt> +<br> +<tt>libs += BMDevice_svnt <b><font color="#990000">BMDevice_stub</font></b></tt> +<br> +<tt>after += BMDevice_svnt <b><font color="#990000">BMDevice_stub</font></b></tt> +<br> +<tt>libs += BMClosedED_exec</tt> +<br> +<tt>after += BMClosedED_exec</tt> +<br> +<tt>libs += BMClosedED_svnt <b><font color="#990000">BMClosedED_stub</font></b></tt> +<br> +<tt>after += BMClosedED_svnt <b><font color="#990000">BMClosedED_stub</font></b></tt> +<br> +<tt>libs += BMDisplay_exec</tt> +<br> +<tt>after += BMDisplay_exec</tt> +<br> +<tt>libs += BMDisplay_svnt <b><font color="#990000">BMDisplay_stub</font></b></tt> +<br> +<tt>after += BMDisplay_svnt <b><font color="#990000">BMDisplay_stub</font></b></tt> +</p> +<p><tt> Source_Files {</tt> +<br> +<tt> Static_CCM_App.cpp</tt> +<br> +<tt> }</tt> +</p> +<p><tt> IDL_Files {</tt> +<br> +<tt> }</tt> +<br> +<tt>}</tt> +<br> + +</p> +</body> +</html> |